2009-10-10 6 views
26

시스템 설정을 변경하여 프로세스에 미니 덤프를 생성 할 수 없습니다. 그래서 내 질문은 이다 : 그것은 내가내 프로세스가 충돌 할 때 미니 덤프를 만드는 방법은 무엇입니까?

  • 을 구성해야합니다 아니면 내가가 가지고해야합니까 설정

    예라면을, 충돌 때

    • 시스템이 사용자 프로세스에 대한 미니 덤프를 생성합니다 프로그래밍 방식으로 미니 덤프를 만듭니다. 충돌

    을 조사하면서

  • 어떻게 효과적인 미니 덤프입니다 나는 (한 가지 예외와 함께, 다음 링크를 참조) 윈도우 XP, C++, VC6 당신은 프로그래밍 방식으로 미니 덤프를 만들 필요가

  • +0

    언제든지 try-catch와 fstream을 결합하여 나만의 미니 덤프를 만들 수 있습니다. –

    답변

    25

    을 사용하고 있습니다 . CodeProject는 멋진 article on MiniDumps을 가지고 있습니다. 기본적으로 dbghelp.dll을 사용하고 MiniDumpWriteDump() 함수를 사용합니다 (MSDN on MiniDumpWriteDump 참조).

    이러한 덤프가 얼마나 효과적인지는 응용 프로그램에 크게 좌우됩니다. 때로는 최적화 된 바이너리의 경우 실제로 쓸모가 없습니다. 또한 경험이 없으면 힙/스택 손상 버그로 인해 길을 잃을 수 있습니다.

    그러나 옵티 마이저가 너무 힘들지 않은 경우 덤프가 일 때이 도움이되는 큰 클래스의 오류가 있습니다. 즉, 스택 추적 + 로컬로 사용 된 변수 값이 유용한 모든 버그가 유용합니다 (예 : 잘못된 파괴 순서), 액세스 위반 (초기화되지 않은 액세스 또는 누락 된 NULL 검사) 등이 포함됩니다. 유지 관리 정책이 어떻게 든 허용되면 VC6에서 응용 프로그램을 포트 받아 들일만한 것, VC8이나 9처럼. 너 자신에게 큰 호의를 베풀어.

    1

    여분의 돈이있는 경우 AQtrace을 살펴볼 가치가 있습니다. 이것은 원격 최종 사용자 시스템에서 실행되는 동안 디버거 내부에서 발생하는 크래시의 많은 장점을 가지고 있습니다.

    14

    gimpf에게 특별한 감사와 답장을 보내 주셔서 감사합니다. 인터넷과 msdn에서 인터넷 검색을했습니다.

    난에 훌륭한 기사를 발견 debugInfo.com이 읽을 가치가있다 : 즉 ++ 2003이 좋은 측면 혜택은 적어도 비주얼 C에서 필요하지만,

    effective minidumps

    +0

    당신이 의미합니까 : googled? –

    +0

    @MatthewRoh 예, 수정되었습니다. – Satbir

    3

    우리는 파이어 폭스에서 Google Breakpad를 사용 OS X 및 Linux도 지원합니다.

    2

    Windows에서 CrashRpt를 사용하여 (전체 코드베이스와 툴체인을 MinGW에서 기본 Microsoft C/C++ 컴파일러로 이동해야했습니다.), Linux에서 google-breakpad가 필요했습니다.

    관련 문제