KiFastSystemCallRet in der Thread-Liste (Debugger) "ausblenden"



  • Wenn man ein Programm im Visual Studio Debugger "angehalten" hat, hat man oft viele viele Threads, die in der Thread Liste als Location "KiFastSystemCallRet" (bzw. "_KiFastSystemCallRet@0") stehen haben.
    KiFastSystemCallRet kennzeichnet dabei quasi den Wechsel in den Kernelmode (bzw. den danach folgenden Wechsel zurück in den Usermode).

    Wenn man einen dieser Threads "aktiviert" (doppelklickt) kann man im Call-Stack schön nachsehen welche Funktion nun wirklich in den Kernelmode gewechselt hat. Da stehen dann Dinge wie z.B. NtWaitForSingleObject, NtWaitForMultipleObjects, NtDelayExecution oder was auch immer.

    Eine Liste von z.B. 30 Threads durchzuklicken ist aber oft etwas lästig.

    Kann man den Debugger irgendwie so einstellen dass KiFastSystemCallRet quasi "übergangen" wird, also anstelle von KiFastSystemCallRet einfach der nächste Punkt darunter angezeigt wird (also NtWaitForSingleObject, ...)?

    Für alle die siche jetzt wundern: KiFastSystemCallRet bekommt man natürlich nur angezeigt wenn man entsprechende Debug-Symbole verwendet. Was bei VS 2005/2008 z.B. einfach dadurch zu erreichen ist dass man "http://msdl.microsoft.com/download/symbols" unter "Symbol file (.pdb) locations:" einträgt (Options->Debugging->Symbols). Dies würde ich allerdings natürlich gerne beibehalten.

    Und 2. Frage, ähnliches Thema: kann man es irgendwie gebacken bekommen dass VS auch den Kernelmode-Teil des Call-Stacks anzeigt (denke wahrscheinlich nicht, aber Fragen schadet nicht 🙂 )?


Anmelden zum Antworten