Verwendung / Debuggen von MFC-ActiveX
-
Hi.
Habe hier eine Aufgabe und finde keinen rechten Ansatz.
Ich habe mir ein ActiveX-Objekt gebaut (mit VS2005, MFC, Unicode). Wenn ich das kompiliere, kann ich es super in z. B. VB6 verwenden.
Nur debuggen kann ich es nicht.
Jetzt wollte ich eine MFC-App erstellen, die ich dann als Container für mein OCX verwende. Allerdings nicht für die kompilierte und registrierte Datei, sondern die Sourcen, damit ich mein OCX auch in VS2005 debuggen kann.
Wie kann ich denn sowas machen?
Ich habe schon eine MFC-Anwendung als Dialog-Anwendung gebaut, wo dann der Text steht "Hier die Steuerelemente hinschieben" oder so ähnlich. Aber ist das der richtige Weg?
Gibt es genau dafür ein Tut oder Beispiel?
Vielen Dank ...
-
Wieso kannst Du ex nicht Debuggen. Gib als Anwednung zum Debuggen Deine Applikation an (VB6) in der Du die DLL verwendest. Thats all.
Zur not kannst Du auch die Funktion Debug -> Attach to Process verwenden.
-
Danke erstmal.
Aber ich meinte nicht dieses Debuggen, sondern das, wo man mit den Funktionstasten und Haltepunkten durch den Sourcecode wandern kann. Und zwar den Sourcecode vom ActiveX, aber der ist ja nicht mehr da, wenn ich die kompilierte Datei in VB verwende.
Ich müsste praktisch ein MFC-APP Projekt haben, in welchem ich auch die Source-Dateien des OCX mit aufnehme, und dieses dann irgendwie verwende.
In VB6 geht das ja auch, dass ich anstatt eines fertigen OCX das Projekt mit den Sourcen einbinde und dann eine ProjektGruppe habe und mein OCX schön debuggen kann.
DANKE
-
Sicher ist der Source-Code da. In der Debug Version oder auch in der Release Version wird Bezug auf die PDB Datei genommen.
So kannst Du es am schnellesten testen:
- Öffne Dein ActiveX Projekt.
- Nun einfach Breakpoints setzen
- Starte von Extern Dein VB6 Programm
- Debug -> Attach to Process
- VB Programmnutzen und Breakpoints werden angelaufen.Im Module-Fenster kannst Du sehen ob die symbolischen Informationen gefunden werden.
-
OH MANN !!!
Und da muss ich ewig Programmieren und suchen und machen und tun -
und dann ist es sooo einfach.
Wenn man nur immer wüßte, wie man sowas findet in der unendlichen Weiten des WWW oder der MSDN.
Ein Glück gibbs dieses Forum hier !!!
VIELEN DANK !!!!!!
-
Hallo. Leider zu früh gefreut.
Auf einem Testrechner geht es, auf meinem Produktivrechner nicht.
Beides Win XP, beide VS2005 und VB6, beides mal die gleichen Projekte.Wenn ich anhängen will, passiert folgendes:
Transport ist immer standard. Der Benutzer hat Admin-Rechte.
Wähle ich "Verwaltet Code", kann ich anhängen, HAltepunkte sehen normal aus, werden aber nicht angefahren.
Wähle ich Systemeigen und Verwaltet, kommt die Fehlermeldung: Anfügen an den Prozess "Zugriff verweigert" nicht möglich.
Wähle ich Systemeigen, kommt die Meldung: Anfügen an den Prozess "Der angeforderte Vorgang wird nicht unterstützt" nicht möglich.
Wähle ich Skript, kann ich mich anhängen, aber es ist wie bei Verwaltet: keine Funktion.Habe es mit ausgeschalteter Firewall versucht. auch nix. Muss ein Dienst laufen? Oder braucht der user bestimmte Rechte? Oder ist die IDE falsch eingestellt (unter Extras Optionen sind so gut wie alle Haken drin...)
Vielle3icht gibbs noch einen Rat? Danke ...
-
Hallo und Guten Morgen.
Ich komme einfach nicht weiter auf meinem Rechner.
Ich habe jetzt, auch mit VS2005, ein C#-Projekt angelegt, mein OCX auf eine Form gezogen und eine Windows-Exe erstellt. Diese kann ich starten, mein OCX funktioniert auch.
Ich kann mich, wenn ich im VS2005 mein OCX-Projekt geöffnet habe, an den Prozess (Automatisch, Verwaltet) des C#-EXE anhängen. Allerdings sind dann die Haltepunkte nicht erreichbar (die verändern ihre Farbe in brauner Rand, weißer Inhalt, gelbes Dreieck). Das gleiche, wenn ich meinem OCX-Projekt in den Einstellungen "Debug" die C#-EXE angebe und F5 drücke.
Irgendwas geht doch da schief, auf dm PC oder? Aber was? Hat damit schonmal jmand gekämpft (und gewonnen)?
Vielen Dank Euch ...
-
Hmm - Habe weng gegoogelt.
Wenn ich in meinem OXX-Projekt bin und mich an den Prozess angehängt habe, dann sehe ich unter Debug-Fenster-Module meine C#-EXE. Dort steht,dass die Symbole geladen wurden. Allerdings die Symboldatei von dem C#-Projekt. Aber die interessiert mich doch eigentlich gar nicht? Wie schaffe ich es, dass die Symboldatei von meinem OCX-Projkt geladen werden?
Ist das der Knackpunkt für die Misere?
Vielen Dank ...
-
Die PDB Datei muss vorhanden sein und vom aktuellen Build. Entweder liegt sie in dem Verzeichnis in dem auch der Build erfolgte, oderim selben Verzeichnis der OCS. Man kann eine PDB Datei mit den Symbolen auch nachladen (Siehe Module Fenster)
-
Vielen Dank erstmal für die Mühe.
Es ist die pdb von der EXE geladen, aber in der sind ja keine Debug-Symbole vom OCX.
Wo lade ich denn die PDB vom OCX nach? Also ich meine für welches Modul? Ich habe im Modulfenster nur Einträge, die sich auf das System oder meine EXE beziehen. Und bei keinem Modul kann ich, wenn ich die pdb von der OCX laden will, dies tun. Er sagt dann immer "Symboldatei stimmt nicht mit dem Modul überein". Zu welchem Modul gehört denn die OCX-PDB? Interop? AXInterop? Beides klappt nicht "stimmt nicht mit Modul überein"
DANKE schön ...
-
Oh Gott, dieses Problem stiehlt mir echt meine Zeit ;-(((
Habe jetzt komplett alles runtergeschmissen, was mit VS2005 zu tun hat. Habe dann eine neues sauberes VS2005 installiert - es ist das gleiche.
Habe mittlerweile herausgefunden, dass es auf einem anderen PC geht, wenn ich als Code "systemeigen" einstelle.
Auf meinem PC kommt, wenn ich An den Prozess anhängen sage, bei Systemeigen, dass dieser Vorgang nicht unterstützt wird. Wenn ich meine EXE als "öffnen mit" im Projekt hinterlege, mit systemeigen, dann macht er das zwar, er lädt sogar die richtige Symbol-Datei, aber meine HAltepunkte sind trotzdem als "nicht erreichbar" markiert. Und zwar alle.
Es sind die gleichen Projekte wie auf dem anderen Rechner. Ich kann zu keinem anderen Projekt mit "systemeigen" mich verbinden. Also schließe ich meine Projekte mal vollkommen aus, es muss etwas mit dem PC zu tun haben.
Aber was?
Ich würde mich über den rettenden Tip sehr freuen ...
Danke
-
Ich verstehe Dein Problem nicht.
Zu jeder DLL und EXE kann eine eigene PDB Datei existieren. Es muss die letzte sein, aus Deinem Build.
Wenn Du einen Release Build machst, musst Du auch die PDB erzeugen.
Im Debug Fenster Module, kannst Du eine PDB Datei nachladen.
Wenn die Version nicht stimmt, dann stimmt eben die Version nicht und es wird eine andere evtl. DLL geladen!PS: Eine Neuinstallation war absoluter Blödsinn und reine Zeitverschwednung. Das Problem hat damit nichts zu tun!
-
Das mit der Neuinstallation habe ich leider bemerkt ;-))
Also es wird genau die pdb geladen (wenn ich mit F5 debugge), die im debug-Verzeichnis ist, aber die Haltepunkte gehen nicht.
Das "An den Prozess anhängen" klappt gar nicht, da bringt er die Fehlermeldung
Anfügen an den Prozess "Der angeforderte Vorgang wird nicht unterstützt" nicht möglich.
Mit den gleichen Projekten geht es ja auf einem anderen PC ;-((
Aber vielen Dank dafür, dass Du Dir Gedanken machst

-
Dann ist die PDB Datei nicht identisch.
Du kanst für eine OCX/DLL in den Debug Einstellungen auch die EXE selbst angeben in der Dein OCX benötigt wird. Dann kannst Du auch einfach mit F5 debuggen.