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?

War es hilfreich?

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()
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top