C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
분야별 포럼
C++빌더
델파이
파이어몽키
C/C++
프리파스칼
파이어버드
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

자유게시판
세상 살아가는 이야기들을 나누는 사랑방입니다.
[28549] rad 10.3.2 버그패치 후... 디버깅 이상증상.
빌더(TWx) [builder] 3408 읽음    2019-08-17 12:28
엠바에서 rad 10.3.2 툴체인용 버그패치를 릴리즈 했는데...

http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=75517

http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=75521


버그패치를 적용한 후... legacy 컴파일러 디버깅이 정상적으로 동작하지 않는다.


1.

clang 버전으로 컴파일 했을 경우.



TPoint 의 default constructor가 호출되면서 위의 캡쳐화면과 같이 cp 멤버 x, y 모두
Watch List 와 Local Variables 창에 0 값으로 정상적으로 셋팅되어 나타난다.

TPoint 의 default constructor는 TPoint 의 멤버 x와 y를 0 으로 셋팅 함.





2.

그러나... legacy(classic) 버전으로 컴파일 했을 경우. 정상적으로 동작하지 않음.




legaycy(classic) 버전으로 컴파일 했을 경우에는...

TPoint 타입의 default constructor가 호출되어...
멤버 x, y가  0 값으로 셋팅되어 표시되어야 함에도 불구하고
전부 엉뚱한 값으로 표시된다.

Watch List 와 Local Vaiables 창에서 모두...



엠바 애들이 clang 컴파일러를 포팅하면서 legacy(classic) 컴파일러와 같은 기존의 omf 포맷을 이용하도록
컴파일러를 이상한 구조로 만들어 놨고...
(legacy 컴파일러와 clang32bit 컴파일러는 omf 포맷을 사용하고, clang64bit 컴파일러는 elf, dwarf 포맷사용)

clang32bit 포팅 컴파일러 사용해서 디버깅 시... 변수값들이 죄다 ????로 엉뚱한 값으로 표시되던 버그를
패치해서 릴리즈했지만, 이 버그패치 코드가 legacy(classic) 컴파일러의 디버깅 정보를 무력화 해버리는
새로운 버그를 만들어 낸 꼴.


버그패치도 발고락으로 만든 건지...

이런 식으로 물건 개판으로 만들면서 곧 10.3.3 버전 또 출시?



그 아이 [tsirorret]   2019-08-18 22:49 X
이런 저런 버그에 저는 요즘 계속 이 툴로 프로그램을 해야하나 고민중입니다.
많은 프로그램을 초기 버젼서 부터 써와서 바꾸기 쉽지 않아, 정말 고민 되는 시점입니다.
빌더(TWx) [builder]   2019-08-21 00:17 X
얘네들은 기형적인 컴파일러 구조 부터 바로 잡아야 해요.

안드로이드, 맥, 리눅스 플렛폼에선... 오브젝트 포맷으로 elf, 디버깅 포맷으론 dwarf 형식을 사용합니다.
elf와 dwarf 형식을 쓰는 건, 이쪽 플렛폼에서 오픈되어있는 소스코드 베껴서 별다른 노력없이 링커, 디버거 등의 툴체인을 만들면 되고
또 이 플렛폼에서 사용되는 표준 형식이기도 한데요.


윈도우즈 플렛폼에선 컴파일러가 기형적인 구조를 갖고있어요.

윈도우즈 플렛폼에서 사용되는 표준 포맷인 coff 오브젝트 파일포맷, pdb 디버깅 포맷을 사용하지 않고
구시대의 유물인 legacy omf 오브젝트 파일포맷과 td32 디버깅 포맷을 고집하고 있습니다.
그리고... 64비트는 또 리눅스 플렛폼에서 사용되는 elf 오브젝트 포맷과, dwarf 디버깅 포맷을 사용합니다.

윈도우즈 플렛폼에서 표준으로 사용되는 포맷을 사용하지 않고, 이런 식의 기형적인 구조를 갖고있는 것은
기존의 legacy omf 코드베이스를 그대로 베껴 쓰고, 마찬가지로 elf, dawf 포맷도 오픈되어 있는 소스코드 베껴서 툴을 대충 만들고 보자.

이런 마인드로 작업을 하고 있는 것 같네요.


델파이로 컴파일 되어있는 바이너리에 종속적이다 보니...
델파이 컴파일러가 윈도우즈에서 표준으로 사용되는 오브젝트, 디버깅 포맷을 생생하지 않으면
C++ 빌더 쪽에서도 손을 쓸 수 없기도 하고요.

프로덕트 매니져들 싹 물갈이 해서 내부혁신을 꽤하지 않으면... 앞으로도 엠바 툴은 전망이 난망 할 것 같습니다.

만들기 쉬운 파스칼 컴파일러에 올인해서 명맥을 유지하는 정도 밖에는... C++ 은 기대난망.
중탱이 [joongtang]   2019-09-29 14:28 X
해당 버그패치가 드디어 나왔네요... 치명적인 버그인 것 같은데  너무 늦은감이 없지않아 보이네요...
같은 개발자로서 다 갈아엎는게 힘든게 이해는 되나 이렇게해서 지속적인 개선이 가능할지 의문입니다.

+ -

관련 글 리스트
28549 rad 10.3.2 버그패치 후... 디버깅 이상증상. 빌더(TWx) 3408 2019/08/17
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.