2016-10-30 4 views
1

C#을 사용하여 블루 스크린 크래시 덤프를 열고 심볼을로드하는 방법이 있는지 알고 싶습니다. 메모리 스택을 검색합니다.C#을 사용하여 블루 스크린 덤프 파일에서 스택 검색

windbg 프로그램을 사용하여 수동으로 수행하는 방법을 알고 있으므로 C#을 사용하여 Windbg에 연결하여 문제를 해결할 수도 있습니다.

C#을 사용하여 메모리 스택을 추출하는 방법이나 C#을 사용하여 Windbg에 연결하는 방법을 아는 사람이 있습니까?

감사합니다.

+0

Windbg은 Windows 시스템 DLL을 사용하여 덤프를 추출합니다. 따라서 www.pinvoke.net을 방문하여 Windows DLL에 대한 C# 인터페이스를 얻을 수 있습니다. pinvoke에서 디버그를 검색 할 수 있습니다. – jdweng

+0

항상 WinDbg [스크립트 파일] (https://msdn.microsoft.com/en-us/library/windows/hardware/ff560137(v=vs.85) .aspx)를 만든 다음 C#을 사용하여 프로세스를 만들 수 있습니다 커맨드 라인'windbg -cf myscript.txt -logo mylogfile.txt'를 사용하고 선호하는 C# 메소드를 사용하여'mylogfile.txt'를 분석하십시오. –

+1

나는 script 옵션을 사용할 것이다. P/Invoke 옵션은 디버거 인터페이스에 도전적입니다. –

답변

0

감사를 넣어,하지만 난 사용하는 것이 훨씬 쉬운 방법을 발견 그것 ... Windbg는 cmd를 사용하여 작동 할 수 있기 때문에 명령을 찾아 이해하기가 어려웠지만 cmd를 사용하여 조작했습니다.

그 후 C#에서 cmd 명령을 보낼 수 있으므로 C#을 사용하여 명령을 보내고 Windbg의 -logo 명령을 사용하여 파일에 결과를 기록했습니다.

그래서 파일을 읽음으로써 결과를 구문 분석하고 내가 원하는 것을 추출 할 수 있습니다.

모든 도움에 감사드립니다!

0

저는 C# 솔루션을 모르지만 PyKd (Python)은 원하는 것을 할 수 있습니다. 내가 주로 WinDbg를위한 플러그인,

로 PyKd을 사용하지만 그것은 파이썬 모듈 그리고 파이썬 스크립트

그래서 WinDbg를위한 필요가 없습니다 사용할 수 있습니다.

그러나 일부 명령은 WinDbg에서와 같은 방식으로 작동하지 않을 수 있습니다. dbgCommand()은 디버거의 명령을 실행하려고 시도합니다. WinDbg없이 작업하면 아마도 가능하지 않습니다.

설명에 따르면 loadDump(), closeDump(), setSymbolPath()setCurrentProcess()이 필요합니다. 프로세스와 스레드에 대한 클래스가 있으며 sp (스택 포인터) 속성이 도움이 될 수 있습니다. 당신이 코드를 ecpanding하려고 할 수 있습니다 처음부터 이동 및 C#에서 dbgeng의 inerfaces를 사용하려면

관련 문제