Fragensteller
vs2010, activex und win 7 (64 bit), debuggen

Frage
-
hallo newsgroup,
ich hoffe, ich habe die richtige ng erwischt...
folgendes, recht diffuse (in meinen augen) problem.
es geht um eine win32-anwendung, c++, mfc, entwickelt mit so ziemlich jedem vs, von vc6 bis heute vs2010. das gui-projekt bindet eigene activex-controls statisch und dynamisch ein (innerhalb der selben umgebung entwickelt).
seit neuestem wird für die entwicklung auch win7 (64, home) benutzt. die anwendung soll erstmal 32 bit bleiben.
augenscheinlich funktioniert alles ganz gut: compilieren, starten, läuft, sowohl als debug- als auch als release-variante.
was nun nicht funktioniert ist, wenn ich einen breakpoint setze. er wird zwar getroffen, aber wenn ich f10 oder f11 drücke (einzelschritt bzw. in-methode), wird nichts mehr in der ide ausgeführt. sie "taucht ab", als würde das programm weiter ausgeführt werden (wird es aber nicht mehr).
im output-fenster erscheint: "First-chance exception at 0x773c4391 (ntdll.dll) in SPCGUI.exe: 0xC015000F: Der zu deaktivierende Aktivierungskontext ist nicht der zuletzt aktivierte Aktivierungskontext."
meine erste vermutung ist, daß es etwas mit den activex-control zu zu tun hat? hintergrund: setze ich direkt nach dem programmstart einen breakpoint, funktioniert weiteres debuggen noch. im laufe der ausführung landet man dann irgendwann in der Create-Methode eines meiner Dialoge (von CDialog abgeleitet), welche nichts weiter tut, als CDialog::Create aufzurufen.
sann gehts hinunter in die tiefen der MFC: CDialog::Create ruft
BOOL bResult = CreateIndirect(hTemplate, pParentWnd, hInst);
und das wiederum früher oder später
BOOL CWnd::CreateDlgIndirect(LPCDLGTEMPLATE lpDialogTemplate,
CWnd* pParentWnd, HINSTANCE hInst)wo dann letztendlich steht (bei mir in dlgcore.cpp:366):
hWnd = ::CreateDialogIndirect(hInst, lpDialogTemplate,
pParentWnd->GetSafeHwnd(), AfxDlgProc);bis zur ausführung dieser zeile klappt im debugger noch alles prima, und danach (da steht nur GetLastError) bekomme ich einen laufzeitfehler: 0xC0000005: Access violation.
der dialog, um den es dabei geht, enthält im grunde auch nichts weiter, außer ein activex-control, daher meine vermutung, daß das damit etwas zu tun hat.
auf einem anderen rechner mit vs2010 aber vista ultimate, 32-bit läuft alles tadellos
jemand eine idee dazu?
micha
Alle Antworten
-
Solche Debugging Probleme mit kompletten Aufhängen bei einem Step Into kenne ich seit VS-2005.
Allerdings reagierte bei mir in diesem Fall weder IDE noch die EXE. Beide hatten sich tot-gesperrt.BTW: Eine einfache Suche in Connect findet auch andere Leidensgenossen:
https://connect.microsoft.com/VisualStudio/SearchResults.aspx?SearchQuery=debugger%2bstep%2binto%2bhang%2b
Fast alle Fälle die meiner Beschreibung entsprechen wurden mit "could not repro" geschlossen.
Allerdings hat sich das bei mir meistens nach Neustart von Rechner gegeben. Manchmal auch erst nach einem Recompile des Projektes.Ich hatte das immer nur bei Debug Versionen. Ich hatte immer incrementelles linken vermutet, dass hier irgendwas mit PDB und EXE nicht stimmt. Aber heraus bekommen habe ich es nie.
So wie Du es schilderst, dass es gezielt (immer) sich aufhängt hatte ich das nie.
Sorry, aber mehr kann ich dazu nicht sagen.
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de -
danke für den hinweis.
d.h. mit anderen worten, es gibt kein grundsätzliches problem, das bekannt wäre, mit der kombination vs2010 + win7/64 + mfc + activex und _eigentlich_ sollte das funktionieren.
klingt für mich, als müsste ich auf win7-sp1 oder vs2010-sp1 warten. aber so ganz ohne debugger ist schon mist ;-(
-
d.h. mit anderen worten, es gibt kein grundsätzliches problem, das bekannt
wäre, mit der kombination vs2010 + win7/64 + mfc + activex und eigentlich
sollte das funktionieren.So ist es. Ich kenne zumindest kein "offizielles Problem".
Ich arbeite auf meinem Laptop schon seit der erscheinen von Windows 7 mit 64bit und habe jeweils immer das neueste VS drauf.Auf dem hatte ich besagten Effekt noch nie.
Meine "Hänger" habe ich (wenn überhaupt) auf meinem Desktop Rechner erlebt und der ist noch Windows 7 32bit.
Aber auch unter Vista mit VS-2005 konnte ich das schon ab und zu beobachten..., aber selten.Sorry!
Martin Richter -- MVP for VC++ [Germany] -- http://blog.m-ri.de- Als Antwort vorgeschlagen Peter Kirmeier Samstag, 1. Januar 2011 18:05