Ich schreibe einen funtion, die einen NULL-Zeiger wie folgt zugreifen:Laden DMP-Datei den Fehlercode zu finden, aber der Absturz auftritt, in einem unerwarteten Ort (in ntdll.dll)
CORRUPTDLL_API int fncorruptDLL(void)
{
int *p = NULL;
printf("%d\n", p[0]);
return 0;
}
und diese dann rufen Funktion in Hauptfunktion wie folgt aus:
int main()
{
fncorruptDLL();
return 0;
}
wie erwartet, bricht es in der „printf“ Funktion und ich kann die Absturzstelle aus dem Stapelrahmen crash place deutlich zu sehen.
Dann benutze ich „WinDbg“ a „DMP“ Datei zu erstellen und es mit VS2015 öffnen, beginnen zu debug.It eine Seite stellt sich heraus, die ‚keine Quelle verfügbar‘ zeigt page während ich habe bereits die richtige“geladen. pdb "file und setze den Quellcodepfad wie folgt: set source code path.
Warum sollte dies geschehen? Ich meine es nicht in meiner Funktion habe laufen, kann ich den Absturz nur sehen, in „ntdll.dll“ (aus Stapelrahmen) .Aber ich bin nicht mit Montage language.Does vertraut dieses " .dmp "Datei funktioniert wirklich?
ich verwendet, um die „adplus“, um die Datei excutable
C:\Program Files (x86)\Debugging Tools for Windows (x86)\adplus.exe -crash -pmn winDgb_Test.exe -FullOnFirst -o D:\VSproject\case-201710\winDgb_Test\Debug\dum
Aber zu überwachen, wenn das Programm abgestürzt ist, es nicht erzeugen keine „.dmp“ file.What ist das Problem?
Fügen Sie Ihren Code in die Frage _as text_, kein Bild ein. – 1201ProgramAlarm
Sie haben die Dump-Datei erstellt, bevor das Programm etwas getan hat. Sie betrachten den "ersten Startpunkt des Programms". –
@RaymondChen Ja, es war meine Schuld.Ich sollte gelernt haben, wie man den "Windbg" verwendet ... – JimmyJack06