How do I set a Data Breakpoint in mixed( C#/C++ ) debugging?

那年仲夏 提交于 2019-12-03 08:33:46

问题


I launch my program in C#, which then calls some unmanaged C++.

When I break on a line in the unmanaged C++, the 'New Data Breakpoint' menu item is grayed out.

Is there anyway around this?


回答1:


To set a data breakpoint in the native portion of a mixed mode process, see the answer posted by jyoung.

Visual Studio disables data breakpoints when running anything but pure, native code. See this post for a partial explanation why from a VS Program Manager.




回答2:


So to do this I had to:

  • set the unmanaged dll as the startup project
  • set the managed program as the startup command
  • set debug mode as Native
  • "break execution" or hit a breakpoint so that you are in the "debugging" state

yech




回答3:


The suggested solution doesn't work all the time. Even when debugging in Native mode, with the program broken in Native piece of code, when trying to set a 'New Data Breakpoint' I get a popup "The breakpoint cannot be set. Data breakpoints are not supported in the Common Language Runtime"

The alternative is to add data breakpoints from code directly. See the article here.

This works well in mixed-mode, it only requires Native debugging mode to be active (as suggested above)




回答4:


A very useful trick which works everywhere is to call breakpoints from code in special conditions:

If (Condition)
    System.Diagnostics.Debugger.Break()


来源:https://stackoverflow.com/questions/243347/how-do-i-set-a-data-breakpoint-in-mixed-c-c-debugging

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!