0

mit der folgenden:Wie Debuggen einer COM DLL (Firefox plugin) -Methode auf Low-Level-Ebene über C++ - Code ohne Debug-Informationen?

  • der 32-Bit-DLL-Code-Datei von einer alten Firefox-Plugin (dh eine DLL unter anderem einem Typelib, XSD und XSL-Einträge enthält), ohne Quellcode oder Debug-Informationen, codiert ursprünglich in C++ und Visual Studio kompilierte,
  • die Namen und die Parameter einer exportierten Funktion/Methode in dieser DLL (eine Funktion der Firefox-Plugin, zugänglich in JS-Code),
  • Visual Studio Gemeinschaft 2013 laufen auf Windows 7,
  • Erfahrung in C++ Entwicklung, aber nicht mit COM oder Firefox,
  • Erfahrung mit Debug-Assembler-Code Intel,
  • eine Code-Lizenz, die die DLL nicht Auseinanderbauen nicht verbietet,

Ich möchte dies zu tun: Laden Sie das DLL in eine C++ Code, und Schritt auf CPU-Ebene in der Code der Funktion, um herauszufinden, was genau es macht.

Kannst du mir einen Hinweis geben, wo ich anfangen soll und wie das geht? Ich denke, die DLL benötigt möglicherweise eine Firefox-spezifische Initialisierung, bevor ich die Funktion aufrufen kann, die ich debuggen möchte. Könnte dies mit dem Firefox SDK gemacht werden, ohne Quellcode und Debug-Informationen für die DLL? Oder kann ich "nackt" die DLL laden, den Einstiegspunkt der - eher einfachen - Funktion (wie?) Finden und aufrufen?

Danke für Hinweise.

+0

Keine Quelle Code hätte Einschränkungen, wenn Sie die DLL-Datei nur mit der PDB-Datei debuggen, auch wenn Sie auch einige Debug-Informationen erhalten könnten: https://www.codeproject.com/questions/287477/debug-the-reference-dll-without-source -code-in-sol und https://msdn.microsoft.com/en-us/library/ms241613.aspx?f=255&MSPPError=-2147217396 –

+0

jedes Update? Würden Sie mir bitte die neuesten Informationen zu diesem Thema mitteilen? –

+0

Wie ich oben schrieb, gibt es keine Debug-Informationen (z. B. PDB-Datei) für die DLL verfügbar. Nur die Symboltabellen usw., die direkt aus der DLL exportiert werden. – following

Antwort

0

Wenn keine PDB-Datei oder Quellcode ist, ist es schwierig für Sie, die DLL-Datei zu debuggen, da der Debugger Debuginformationen aus der PDB-Datei lädt und verwendet, um Symbole zu lokalisieren oder aktuellen Ausführungsstatus eines Programmquellcodes beziehen. Visual Studio verwendet PDB-Dateien als primäres Dateiformat zum Debuggen von Informationen während des Debuggens. Wenn diese Dateien nicht vorhanden sind, können Sie diese Bibliothek nicht debuggen.

Update:

Wir dynamisch eine DLL zu einem Projekt mit Loadlibrary() Funktion laden, aber wenn Sie in Ihre DLL-Datei Schritt mögen, ist es erforderlich wirklich die PDB-Datei. Ein einfaches Beispiel besteht darin, dass Sie eine PDB-Datei im selben Ordner wie ein einfaches benutzerdefiniertes DLL-Bibliotheksprojekt erstellen und platzieren können. Ich denke, dass Visual Studio das Verzeichnis automatisch durchsucht und sie lädt, konnten Sie die Informationen in Ihren Debug-Modulfenstern finden.

Der folgende Fall ist nicht das gleiche Problem wie bei Ihnen, aber es teilte uns auch, dass es die PDB-Datei zu laden, wenn die DLL-Datei wirklich von einem Projekt/Prozess aufgerufen wurde:

Does winbase::LoadLibrary() load .pdbs?

+0

Die Umzugsinformationen sowie die Eintrittspunktsymbole sind nicht in der PDB, sondern in der DLL (sonst wäre die DLL überhaupt nicht verwendbar! Windows benötigt beide Informationen, um den DLL-Code auszuführen.) Es ist möglich, alle DLLs ohne PDB Low-Level zu debuggen Datei - siehe meinen letzten Kommentar oben -, ich könnte es mit einer "einfachen DLL" machen, aber ich weiß nicht, wie es mit einer COM DLL funktioniert. Das ist, worum es bei meiner Frage hier geht. – following

+0

@ folgende, Ich gebe nur einige Informationen in meiner vorherigen Antwort, aber wenn Sie wirklich in die DLL-Datei gehen möchten, würde es die PDB-Datei benötigen. –

+0

In der Disassembly-Ansicht ist es möglich, in jeden Code ohne PDB-Datei zu gehen. – following

Verwandte Themen