Es gibt die Art der Symbole abhängt.
Öffentliche Symbole, enthalten keine Informationen über formale Parameter. Dies ist explained to great length here (Hinweis: Diese Seite ist auch in der Windbg-Hilfedatei verfügbar, suchen Sie nach "Public and Private Symbols").
Funktionen, auf der anderen Seite enthalten sind sowohl im privaten als Symbol Daten und allgemein zugängliche Symboltabelle, aber während des privaten Datensymbol enthält die Funktion Namen, Adresse, FPO Aufzeichnungen, Eingabeparameter Namen und Typen , und Ausgabetyp, die öffentliche Symboltabelle enthält nur die Funktion Name, Adresse und FPO-Datensatz.
x
, ln
(oder einige andere Befehle wie .fnent
) sollten Sie diese Art von Informationen.
Beispiel mit Notizblock:
0:004> x notepad!RestoreFmt
00007ff7`471251a8 notepad!RestoreFmt (<no parameter info>)
0:004> ln notepad!RestoreFmt
Browse module
Set bu breakpoint
(00007ff7`471251a8) notepad!RestoreFmt | (00007ff7`471251f8) notepad!SaveFile
Exact matches:
notepad!RestoreFmt (<no parameter info>)
Beachten Sie, dass <no parameter info>
eindeutig fest, dass die Symbole enthalten nicht die erforderlichen Informationen ein.
Dasselbe zu einem anderen Programm mit einem eigenen symbolischen Informationen angewandt:
C++ Code:
bool DiskReaderWriter::ReadDisk(off_t offset, size_t size_to_read, std::vector<BYTE>& buffer)
Windbg:
0:001> x drive_rw!DiskReaderWriter::ReadDisk
00000000`00d202c0 drive_rw!DiskReaderWriter::ReadDisk (long, unsigned int, class std::vector<unsigned char,std::allocator<unsigned char> > *)
0:001> ln drive_rw!DiskReaderWriter::ReadDisk
Browse module
Set bu breakpoint
g:\app\cpp\drive_rw\diskreaderwriter.cpp(72)
(00000000`00d202c0) drive_rw!DiskReaderWriter::ReadDisk | (00000000`00d20410) drive_rw!std::_Iterator_base12::_Adopt
Exact matches:
drive_rw!DiskReaderWriter::ReadDisk (long, unsigned int, class std::vector<unsigned char,std::allocator<unsigned char> > *)
Windbg zurück Es ist nicht ein Ausgabe der Symbole, es ist eine Frage des Befehls. Verwenden Sie 'kb', um die Parameter in 32 Bit anzuzeigen. Beachten Sie, dass bei 64-Bit-Registern die Parameter übergeben werden und "kb" das nicht für Sie. –
Ich möchte nicht die tatsächlichen Parameterwerte sehen, sondern die formalen Parameter (Terminologieverwechslung). Beispiel: void f (int a); .... f (5). Was "kb" mir gibt, ist der Wert 5. Was ich sehen möchte, ist, dass Funktion f einen Parameter vom Typ int nimmt. – plainoldcj