none
Debug ATL Activex Objekt RRS feed

  • Frage

  • Hi,

    da ich das erste Mal an einer ActiveX dll für Internet Explorer arbeite, habe ich Schwierigkeiten diese dll zu debuggen. Bis jetzt habe ich folgende Vorgehensweise "gefunden":

    1) In der Debugging Sektion in den Projekt Einstellungen: Bei "Command" setzen: "C:\Program Files (x86)\Internet Explorer\iexplore.exe"
    2) Bei "Command Arguments" setzen: "<Pfad zu index.html>". In index.html existiert ein object tag mit der richtigen CLSID des Activex  Objekts.
    3) Debugging starten

    Wenn die Seite nun lädt (index.html), dann wird das Objekt nicht geladen, so als ob es nicht gefunden werden kann. Die dll ist auch nicht in dem "Modules" Fenster angezeigt. Ich habe keine Ahnung an was das liegen könnte. Wenn ich den Internet Explorer manuell starte und denselben Pfad eingebe, wird das Objekt erfolgreich geladen.

    Ich hatte auch die Idee den Debugger manuell an eine bereits laufende Instanz von Internet Explorer zu attachen. Wenn ich dann auf die Seite (index.html) gehe, wird das Objekt geladen und angezeigt. Jedoch wird in Visual Studio unter "Modules" die dll wieder nicht gelistet. Dementsprechend wurden auch keine Debug Symbole geladen.

    Kann irgend jemand helfen was ich hier falsch mache?

    Vielen Dank!

    Mario M

    • Bearbeitet Falarys Donnerstag, 27. Januar 2011 16:09
    Donnerstag, 27. Januar 2011 13:56

Antworten

  • > Kann es eventuell sein, dass Internet Explorer zwar die Seiteninhalte in einer Instanz anzeigt, jedoch das dll objekt in einem anderen Prozess startet?

    Ich bin mir nicht ganz sicher, weil ich nicht in diesem Bereich entwickle. Aber so wie ich die einzelnen Prozesse sehe vermute ich, dass es sich so verhält.

    Du kannst Ja in Deinem ActiveX einen DebugBreak in die geeignete Sourcestelle einbauen und Dich bei dem "Crash" der entsteht an den Prozess attachen.


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
    • Als Antwort markiert Falarys Montag, 31. Januar 2011 08:43
    Donnerstag, 27. Januar 2011 16:35
    Moderator

Alle Antworten

  • Bist Du sicher, dass Du die korrekte Instanz erwischt hast. Vom IE8 werden mehrere Instanzen gestartet.


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
    Donnerstag, 27. Januar 2011 15:34
    Moderator
  • Hi,

    vielen Dank für die schnelle Antwort :)

    Die falsche Instanz kann ich ja nur bei der zweiten Lösung mit manuellem Attachen erwischen. Beim Starten aus Visual Studio bei der das Objekt gar nicht lädt, muss ja bereits die richtige Instanz attached sein.

    Wenn ich manuell attache, dann nehm ich immer die Instanz bei der der Titel aus der eben geöffneten Seite steht im Modules Fenster. Wenn ich dann auf die Seite mit dem activex objekt gehe, ändert sich der Titel im Modules Fenster zum Titel der neuen Seite (Prozess ID bleibt gleich). Kann es eventuell sein, dass Internet Explorer zwar die Seiteninhalte in einer Instanz anzeigt, jedoch das dll objekt in einem anderen Prozess startet?

    PS: Was ich noch vergaß im ersten Post: Benutze Internet Explorer 8.

    Donnerstag, 27. Januar 2011 16:08
  • > Kann es eventuell sein, dass Internet Explorer zwar die Seiteninhalte in einer Instanz anzeigt, jedoch das dll objekt in einem anderen Prozess startet?

    Ich bin mir nicht ganz sicher, weil ich nicht in diesem Bereich entwickle. Aber so wie ich die einzelnen Prozesse sehe vermute ich, dass es sich so verhält.

    Du kannst Ja in Deinem ActiveX einen DebugBreak in die geeignete Sourcestelle einbauen und Dich bei dem "Crash" der entsteht an den Prozess attachen.


    Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de
    • Als Antwort markiert Falarys Montag, 31. Januar 2011 08:43
    Donnerstag, 27. Januar 2011 16:35
    Moderator
  • Juhu! Es ist vollbracht! Das activex objekt wird tatsächlich in einem anderen Prozess geladen (der aber sogar schon beim Start von Internet Explorer erzeugt wird). Beim manuellen attachen zum Prozess sind nun alle Debug Symbole geladen! Vielen vielen Dank! Debuggen erleichtert das Entwickeln doch ziemlich :)
    Montag, 31. Januar 2011 08:42