문제

내가 작성한 C ++ 응용 프로그램을위한 릴리스 빌드를 생성하려고합니다. vs2008 내에서 실행하면 응용 프로그램이 정상 (디버그 및 릴리스)을 실행합니다. 그러나 실행 파일을 실행하면 거의 매번 충돌합니다.

이제 해킹이 있으므로 모든 코드를 실행하지 않고이 애플리케이션이 독립형 애플리케이션으로 실행하거나 원인이되는 버그를 찾을 수 있습니까?

미리 감사드립니다.

도움이 되었습니까?

해결책

요컨대, 아니요.

버그가 VS 내에서 작동한다면 버그를 찾아야 할 것입니다. 그러면 타이밍 문제라고 추측 할 수 있습니다. 아마도 공유 스레드 데이터를 덮어 쓰고있을 것입니다. VS는 디버그 환경에서 실행되는 것처럼 약간 느려집니다.

버그를 찾는 데 도움이된다면 더 자세히 알려주세요. 그렇지 않으면 Debug Symbols (PDBS)로 릴리스를 작성하고 Drwatson을 시스템 디버거로 설치하고 독립형 실행을 실행하십시오. 충돌하면 drwatson이 미니 럼프 파일을 만들고, 이것을 Windbg (내가 가장 좋아하는)에로드하면 버그가 어디에 있는지 정확히 알 수 있습니다 (덤프에 예외가 포함되어 있음을 알려주고 기본적으로 표시 할 수 있습니다. . 당신은 당신의 소스 코드 경로와 WindBG의 기호에 경로를 추가하여이를 올바르게 수행하도록해야합니다).

그런 다음 앱이 현장에서 실행될 때 충돌을 진단하는 방법도 알게 될 것입니다.

다른 팁

외부 자원을로드하고 있습니까? C ++ 프로그램에서 상대 경로가 올바른지 확인하면 확인하십시오.

한 가지 가능성은 귀하의 프로그램입니다 비 초기 힙 데이터를 사용합니다. 디버거에서 프로그램을 시작하면 NT 디버그 힙이 가능하므로 힙 할당자가 새 메모리 블록을 채우고 채우기 패턴을 채우고 일부 힙 확인이 가능합니다. 디버거 외부에서 동일한 프로그램을 시작하면 NT 디버그 힙이 비활성화되지만 프로그램이 C 런타임의 디버그 버전에 연결된 경우 CRT 디버그 힙을 계속 활성화합니다.

가능성은 훨씬 적을 가능성은 귀하의 프로그램입니다 필요합니다 SeDebugPrivilege 프로세스 토큰으로 설정해야합니다. 디버거는 프로세스 토큰에서 이러한 특권을 가능하게하는데, 이는 디버거에서 출시 된 모든 프로그램 이이 특권을 상속받는 부작용이 있습니다. 프로그램을 사용하려고하는 경우 OpenProcess()/ReadProcessMemory()/WriteProcessMemory() 오류를 올바르게 처리하지 않으며 충돌 할 수 있습니다.

몇 가지 가능성이 있습니다. 이미 언급 된 것 외에도 Visual Studio에서 앱을 실행하면 Visual Studio 인스턴스와 동일한 보안 컨텍스트에서 실행됩니다. 예를 들어, Vista에서 작업하는 경우 보호 파일 또는 레지스트리에 액세스하려고하는 경우 처리되지 않은 보안 위반에 도달 할 수 있습니다.

디버그 버전을 만들고 독립형 실행을 실행하면 어떻게됩니까? 충돌합니까? 그렇다면 일반적으로 거기에서 디버거로 침입하여 오작동이 무엇인지 확인하기 위해 통화 스택을받을 수 있습니다.

당신이 한 세부 사항에서, 그것은 도서관 문제가있을 수있을 것 같습니다. 같은 컴퓨터에서 프로그램을 실행하고 있습니까? 그렇지 않은 경우 응용 프로그램에 적합한 라이브러리를 배포해야합니다. 동일한 컴퓨터에서 DEV 환경 외부에서 실행중인 경우 애플리케이션이 적절한 라이브러리를 볼 수 있는지 확인하십시오.

릴리스에서 디버그하는 가장 좋은 방법은 충돌이 발생할 때 충돌 덤프를 생성하고 덤프를 통해 DEV 컴퓨터에 디버그 기호를로드하고 무슨 일이 일어나고 있는지 알아낼 수 있습니다. 추가 정보는 여기에 있습니다 : http://www.debuginfo.com/articles/effminidumps.html

Visual Studio에서 File =>을 열고 .Exe를 열 수 있으므로 디버거 자체 아래에서 시작하지 않을 수도 있습니다. 도움이 될지 확실하지 않습니다.

http://blogs.msdn.com/saraford/archive/2008/08/21/did-you- know-you-can-nbug-an-executable-ta-isn-ta-part-of-a-visual- Studio-Project-Tool-Tools-Attach-to-Process-296.aspx

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top