PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Debugging - Wie vom call stack zum Quellcode gelangen?


Sephiroth
2010-01-26, 20:34:59
Ich hab da ein Programm was reproduzierbar abstürzt. Dazu habe ich private Symboldateien und den Quellcode. Wie kann ich jetzt mit Hilfe der Angaben im call stack auf die Zeile im Quellcode schließen?

call stack
imgicon.dll!__crt_debugger_hook() Unknown
imgicon.dll!__report_gsfailure() Zeile 315 + 0x7 Bytes C
imgicon.dll!nsIconChannel::MakeInputStream() + 0x404 Bytes C++

Beim 2. Eintrag ist die Option go to source bei Visual Studio verfügbar, beim interessanten 3. Eintrag aber nicht. Kann ich das Visual Studio nicht irgendwie beibringen? Wie finde ich heraus welcher Codezeile dafür verantwortlich ist?

Ich hab auch in WinDbg den Ordner mit dem Quellcode angegeben aber auch da nix.

del_4901
2010-01-26, 20:51:48
nsIconChannel::MakeInputStream() ist aber in deinem Source vertreten? Wenn ja dann schau doch mal im Assemblat an der Stelle + 0x404 ???

Monger
2010-01-26, 21:07:57
Wir reden über .NET, nicht wahr?

Wenn du debuggst, mach mal einen Rechtsklick auf die Breakpoints, oder in den Quellcode. Du solltest im Kontextmenü eine Option haben, um Symbole zu laden.

Ich blick da ehrlich gesagt selber noch nicht ganz durch, aber du kannst dort Quellen angeben, die er berücksichtigen soll. Normalerweise kommt auch bei einem "Step in" in die Funktion ein Öffnen Dialog, indem er nach dem Ordner mit den Quelldateien verlangt. Standardmäßig durchsucht er einige Standardpfade - aber wenn Visual Studio überhaupt keine Ahnung hat wo Debug Informationen liegen könnten, muss man halt von Hand nachhelfen. Dazu muss aber Quelle und Kompilat Eins zu eins übereinstimmen.

Sephiroth
2010-01-26, 21:29:51
nsIconChannel::MakeInputStream() ist aber in deinem Source vertreten? Wenn ja dann schau doch mal im Assemblat an der Stelle + 0x404 ???
ja. Was ist ein Assemblat? :redface:

@Monger
Beim Step in wird mir nur der (Dis)Assembly Code angezeigt. Nach dem Ordner mit den Quelldateien wird nicht verlangt.

Monger
2010-01-26, 21:43:50
Dann schau mal, ob du im Kontextmenü irgendwas à la "Load Symbol information" o.ä. findest. Hab leider grad kein Visual Studio da, kann deshalb auswendig nix sagen.

Sephiroth
2010-01-26, 21:54:07
Dann schau mal, ob du im Kontextmenü irgendwas à la "Load Symbol information" o.ä. findest. Hab leider grad kein Visual Studio da, kann deshalb auswendig nix sagen.
die Symbole werden doch schon geladen

Monger
2010-01-27, 18:06:25
Bin gerade heute wieder über eine ähnliche Problematik gestoßen...

Ich glaube, solange die DLL nicht tatsächlich mit Debug Informationen kompiliert wurde, siehst du selbst dann nichts, wenn du dir auf anderem Wege die PDBs und Quellen besorgt hast. Er kriegt einfach die Zuordnung nicht hin.

Ich hatte jetzt natürlich das Glück, dass ich auch das Kompilat in der Hand hatte, und davon den Debug Build nehmen konnte.