Wie richte ich ein Data- Breakpoint- in gemischten (C # / C ++) Debuggen?
-
04-07-2019 - |
Frage
Ich starte mein Programm in C #, die dann einige nicht verwaltete C ++ ruft.
Wenn ich auf einer Linie in dem nicht verwalteten C ++ zu brechen, ist die ‚Neu Data- Breakpoint-‘ Menüpunkt grau dargestellt.
Gibt es trotzdem, um dies?
Lösung
Um einen Datenhaltepunkt in dem nativen Teil eines gemischten Modus Prozess eingestellt, finden Sie in den von jyoung geschrieben beantworten.
Visual Studio deaktiviert Stützpunkte Daten, wenn alles andere als rein, nativen Code ausgeführt wird. Siehe dieses Beitrag für eine teilweise Erklärung dafür, warum von einem VS-Programm-Manager.
Andere Tipps
So, dies zu tun ich hatte:
- der nicht verwalteten DLL als Startprojekt festlegen
- setzen Sie das verwaltete Programm als Startbefehl
- gesetzt Debug-Modus als Native
- "break Ausführung" oder einen Haltepunkt erreicht, so dass Sie in der "Debugging" state sind
Yech
Die vorgeschlagene Lösung funktioniert nicht die ganze Zeit. Selbst wenn in einheitlichem Modus debuggen, mit dem Programm in nativer Stück Code gebrochen, wenn eine ‚Neue Data- Breakpoint-‘ zu setzen versuchen, erhalte ich ein Popup "Der Haltepunkt kann nicht eingestellt wird. Datenhaltepunkte nicht in unterstützt werden die Common Language Runtime "
Die Alternative ist, um Daten aus dem Code-Breakpoints direkt hinzufügen. Siehe den Artikel hier .
Das funktioniert gut in gemischtem Modus, es erfordert nur indiaDebugGing-Modus aktiv zu sein (wie oben vorgeschlagen)
Ein sehr nützlicher Trick, die überall funktioniert, ist unter besonderen Bedingungen Haltepunkte aus Code aufrufen:
If (Condition)
System.Diagnostics.Debugger.Break()