2009-07-07 4 views
1

저는 Purify 6을 사용하여 VC++ 2003 (7.1)로 빌드 된 실행 파일 중 하나에서 메모리 손상을 분석하려고합니다.실행 파일이 점진적으로 링크되었는지 여부를 어떻게 알 수 있습니까?

purify /Replace=yes /Run=no myprog.exe 

인스 트루먼이 나에게 실행을 말하는 중단 점진적으로 연결되었다 : 명령으로 나는 악기 바이너리가

. 의아해했지만 빌드 옵션을 확인했지만 /INCREMENTAL:NO은 거기에있었습니다. 확실히, 나는 그것을 재건했고 선택권은 링크 시간에 정확하게 통과되었다.

실행 파일이 점진적으로 링크되었는지 여부를 알 수있는 방법이 있습니까?

나는 dumpbin /HEADERS이 말한 것을 보았지만 관련성이없는 것을 보았습니다.

감사합니다.

+0

점진적으로 링크 된 실행 파일이 평소보다 클 수 있다고 생각합니다. – ChrisW

+0

그들은 확실히 할 수 있지만, 그것이 나를 돕지 않는다는 것을 알고 있습니다. – bltxd

+0

디버그 또는 릴리스 exe 시도합니까? "/ INCREMENTAL은/DEBUG가 지정 될 때 암시되기 때문에"(http://msdn.microsoft.com/en-us/library/4khtbfyf.aspx). – Kcats

답변

2

옵션 1 :

C : ...> DUMPBIN/요약 whatever.exe는 ".textbss"섹션

봐.

이것이 100 % 신뢰할 수 있는지 모르겠지만 제 경험에 따르면 증분 링크를 할 때 링커는 항상이 섹션을 추가합니다.

옵션 2 : 실행 옆에 ".ILK"파일에 대한

봐. Visual Studio는 사용하지 않을 때이를 정리하는 것이 좋을 것입니다. 따라서 증분 링크 및 빌드를 비활성화하면 ("다시 작성"조차도) 제거해야합니다.

옵션 3 :

는 (도구/옵션/프로젝트) 로그인 빌드를 활성화하고 "/ INCREMENTAL"또는 "/ INCREMENTAL : NO"찾기가 생성 buildlog.html 파일에.

옵션 4 :

가 된 .vcproj 파일을 구문 분석합니다. (ick!)

+0

옵션 2를 정리하는 방법은 다음과 같습니다. 내 의견에있는 MSDN 링크를 사용하면 별다른 의미가있는 것으로 보입니다. (옵션 3은 실제로 빌드 명령의 유효성을 검사하여 질문 자체에서 언급 한 것 같습니다.) – Arjan

+0

입력 해 주셔서 감사합니다. 나는 곧바로 1 점을 검사 할 것이다. 다른 프로세스는 빌드 프로세스 (여기서는 .vcproj가 아님)를 제어하고 있으므로 전달 된 바이너리가 점진적으로 실수로 링크되지 않았는지 확인해야하기 때문에 약간 떨어져 있습니다.빌드 프로세스는 .ilk 파일을 설치하지 않습니다. – bltxd

+0

바이너리를 제공하는 경우 가장 좋은 방법은 깨끗한 체크 아웃 (환경을 제어 한 전용 빌드 머신에서 빌드)을 통해 바이너리를 빌드하는 것입니다. 이것은 이것과 다른 많은 잠재적 인 문제들을 제거 할 것입니다. – Eugene

관련 문제