2009-06-11 4 views
0

Nehmen wir onstiges eine SchnittstelleBreakpoint- auf api von COM-Schnittstelle ausgesetzt

interface Ifoo 
{ 
    HRESULT foo(); 
}; 

ist, die Teil eines binären Dll ist. Ich habe keinen Quellcode dafür.

Kann ich einen Haltepunkt auf foo() API ausgesetzt von der Schnittstelle Ifoo dieser Binärdll mit Windbg?

Ich weiß, wir können Breakpoints auf Binärdlls mit windbg setzen, aber mit COM bin ich mir nicht sicher.

Antwort

1

Gut danke für das Aufzeigen, ich meinte tatsächlich setzen Breakpoint auf Implementierung von foo.

So habe ich herausgefunden. In meinem Fall wollte ich Breakpoint auf eine Windows-System-DLL setzen.

So lief ich Befehle auf Windbg als

> x dllname*!foo* 

Es gab mir die Liste von foo Implementierungen in in dlls mit Namensabgleich dllname.

wie

7331122 dllname!CFoo::foo 

dann diese Adresse mit der Verwendung von I setzen Stützpunkte

bp 7331122 

U kann die Sollbruchstelle anzuzeigen Befehl

>bl 
1

Unabhängig davon, ob Sie COM verwenden oder nicht, können Sie keine Haltepunkte auf einer Schnittstelle setzen: Eine Schnittstelle wird nie ausgeführt, daher gibt es keine Möglichkeit, auf einer Schnittstelle zu "brechen".

Wenn Sie jedoch wissen, dass Ifoo von CFoo implementiert wird, können Sie natürlich einen Breakpoint auf CFoo :: foo setzen.