2012-10-24 2 views
1

나는 혼합 된 코드를 사용하여 우리 제품에서 가정 된 리소스 누출을보고하는 고객이 있습니다. 그래서 실제로 진행되고있는 것을보기 위해 디버깅하고 싶었습니다. 나는 Visual Studio와 같은 이상한 점을 경험 해왔다. 코드를 단계적으로 실행하는 동안 멈추고 나쁜 종료 코드로 무작위로 멈추는 디버거를 경험했다.소스 코드의 단계를 밟으면 Visual Studio 디버거가 종료됩니까?

필자는이 문제의 원인이되는 관리되지 않는 기능에 이르기까지 다른 스레드에서 시작된 기능입니다. 내가 코드의 정확한 행을 가지고 있다고 생각하지만 문제의 위치가 계속 변하는 것 같다. 그래서 문제의 일반적인 위치에 도달하고 어셈블리 코드를 단계별로 단계별로 실행하기 시작했습니다.

함수를 처음 시작한 곳으로 이동하여 디버거가 그 지점에 도달하면 붐 (boom)하여 그 단계를 지나면 나옵니다. 함수에 브레이크 포인트 20 줄을 대신 설정하면 실행이 그 지점을 만든 다음 디버거가 종료되므로 실제로 내 함수가 실제로 수행하는 작업과 관련이 없다고 생각하지 않습니다 { }.

F10을 사용하여 디버거가 중지되고 종료 코드가 STATUS_WX86_BREAKPOINT 인 경우 F11을 사용하여 종료 코드 STATUS_WX86_SINGLE_STEP로 중지합니다. 오류 코드의 이름은 스테핑의 유형에 따라 나에게 의미가 있지만 실제로 무엇이 잘못되었는지는 알려주지 않습니다. 내가 다시 실행하면 해체에서 브레이크 포인트로 움직여서 이전에 무슨 일이 일어 났는지 생각해 볼 생각이다. 출구는 일찍 발생하므로 매우 짜증이났다. 전에 이런 일이 발생하지 않았으며이 오류가 실제로 잘못되었다는 것을 많이 알 수는 없습니까?

때때로 나쁜 코드로 종료하는 대신 Visual Studio는 단순히 나를 잠급니다.

+1

다른 스레드에서 오류가 발생하여 프로그램이 중단 될 수 있습니다. 특정 스레드를 통해 스테핑을 시작하면 스케줄러는 사용자를 표시하지 않고 다른 스레드에서 많은 코드를 실행하여 실행할 수 있습니다. – paddy

답변

0

@paddy의 의견에 동의하는 경향이 있습니다. 문제는 다른 스레드에서 발생한 것 같습니다. 첫 번째 예외 상황에서 VS가 중지되도록 설정 했습니까?
당신의 경우에는 비 관리 코드이므로 win32 예외 및 C++ 예외 (모두)에서 중단되도록 디버거를 설정합니다.
디버그 메뉴에서 할 수 있는지 잘 모르는 경우 -> 예외 ...

관련 문제