2012-09-03 3 views
1

.NET Framework 4.0에서 32 비트 환경의 WinDbg에서 SOSEX을 사용하여 C# 응용 프로그램을 디버깅하려고합니다. 32 비트 v4.0 용 sosex.dll을 사용합니다. 여기 ! mbp를 사용하여 SOSEX에 대한 중단 점이 작동하지 않습니다.

이 단계는 :

  1. sxe ld:mscorlib
  2. sxe ld:clrjit
  3. load경로
  4. !mbp application.cs 34 sosex.dll하는

그것 (이 라인 (34)에 브레이크 포인트를 설정) 여기에서 잘 작동합니다.

그러나 WinDbg를 새로 시작하고 C# application.exe 프로세스에 연결하고 필요한 단계를 수행하면 중단 점이 작동하지 않습니다.

내가 관찰 한 한 가지 점은 WinDbg에서 lm 명령을 처음 실행했을 때 출력 결과가 application.exe 인 것으로 나타났습니다.

하지만 다음 번에 lm 명령은 모든 모듈이 이미로드 나타났다 (clrjit, mscorlib 등) 브레이크 포인트가 작동하지 않는 이유

이인가?

+0

추가하려는 [이 주제에 대한 이전 질문] (http://stackoverflow.com/questions/12244012/breakpoint-doesnt-work-in-windbg-using-sosex)의 세부 정보가있는 경우 이 질문은 [편집]이 질문을 여기에 추가하십시오. – shambulator

+0

이 [게시물] (http://stackoverflow.com/questions/11768921/breakpoint-set-by-sosex-mbp-or-sosex-mbm-not-working) 확인 했습니까? –

답변

0

SOSEX에서는 위의 1 단계와 2 단계가 필요하지 않습니다. 디버거에서 응용 프로그램을 시작하면 초기 중단 점의 !mbm!mbp을 사용할 수 있습니다.

문제가 무엇입니까? application.cs, 줄 34에 무엇이 있습니까? 이것이 진입 점 (Main)입니까? 코드가 이미 실행 된 후에 중단하려고하는 것 같습니다. 귀하의 시도에서 모든 디버거의 분출을 첨부하십시오. 이렇게하면 문제의 원인을 정확하게 찾을 수 있습니다.

+0

콘솔에서 "hello"를 출력하는 main() 내에서 print()라고하는 간단한 메소드입니다. 중단 점은이 메서드에서 설정됩니다. 이 메소드가 나오기 전에 Console.ReadKey()가있어이 키가 애플리케이션에서 눌려지면 print() 메소드가 호출된다. – user1502952

+0

나는 이것을 "SOS.dll"로 테스트했습니다. 중단 점은 정상적으로 작동합니다. – user1502952

+0

Print 메서드가 인라인되었는지 알 수 있습니까? 언제든지 저에게 연락하십시오. Sosex가 부러지면 해결하고 싶습니다. –

관련 문제