크기가 190MB 인 C++ 바이너리가 있습니다. 이 바이너리를 dbx에 넣고 중단 점을 만들려고하면 dbx가 중단됩니다. dbx가 매달린 동안 나는 그 메모리가 빠르게 10GB 이상으로 커지는 것을 보았습니다. TotalView를 사용하면 중단 점을 설정할 수 있습니다. 그러나 표시되는 모든 데이터는 가짜입니다. 나는 다른 많은 작은 바이너리를 성공적으로 디버깅했기 때문에이 바이너리의 큰 크기가 문제가된다.큰 실행 파일로 인해 디버거가 중단됩니다.
바이너리 : ELF 32 비트 MSB 실행 파일 SPARC32PLUS 버전 1, V8 필수, 동적 연결, 제거되지 않음.
컴파일러 : 참조 : Sun C++ 5.9 SunOS_sparc 2007/05/03.
Dbx : 7.6 SunOS_sparc 2007/05/03.
TotalView : 8.2.0-0
운영 체제 : 솔라리스 10
내가 dbx를 사용하고 방법 :
dbx mybinary
stop at Something.cc:170
dbx를 결코이 명령에서 반환되지 않으며 나는 결국 별도의 터미널에서 dbx를 죽여야 .
나는 성공하지 못한 채 몇 가지 시도를했다.
1. 대부분의 라이브러리에서 링크를 동적으로 바꾸어 바이너리 크기를 19 MB로 줄였다.
2. Solaris x86에서 시도했습니다.
3. 소프트웨어를 64 비트로 컴파일합니다.
누가 이런 일이 발생할 수 있으며 문제를 해결할 수있는 방법을 알고 있습니까?
컴파일러 버전 및 dbx 버전은 무엇입니까? dbx -V CC -V 확인 만하면 : "stop"명령을 입력하면 dbx가 멈추고 커지기 시작합니다. 그래서 디버거에서 프로그램을 실행하지 않아도됩니까? –
나는 원래의 글을 깨끗하게 정리하여 질문에 대답했다. – Hitman
시도해 볼 수있는 좋은 점 중 하나는 최신 버전의 Solaris Studio를 다운로드하여 사용하는 것입니다. http://www.oracle.com/technetwork/server-storage/solarisstudio/downloads/index.html 사용중인 버전은 4.5 년입니다. –