检测调试器是否已连接*和*单步执行

Moo*_*ice 13 .net c# debugging visual-studio-debugging

我知道的Debugger在类内System.Diagnostics拥有命名空间IsAttached属性.

在某个地方是否有一个属性可以增加这个调用并告诉我,如果我们实际上是在单步执行代码,而不仅仅是简单地附加?我知道这可能不太可能,但知道它会很有用.

编辑

也许是一个更好的问题,而不是"踩踏"运行一些代码:

  1. 当调试器第一次"中断"时(进入调试模式,附加后)
  2. 当它再次运行时(但仍然附着,但不是"踩踏").

Han*_*ant 2

您可以从 Debugger.CurrentMode 属性获取调试器状态。但这只能告诉您当前是否处于中断状态或者程序是否正在运行。没有“步骤”模式,这是一个转瞬即逝的时刻,这几乎可以确保,如果你能找到它,那么采取行动就已经太晚了。实际上保证是一场线程竞赛。

  • `System.Diagnostics.Debugger` 没有 `CurrentMode` 属性,只有 [EnvDTE.Debugger](https://msdn.microsoft.com/en-us/library/envdte.debugger.currentmode.aspx) 有它。恐怕这只能用于 VS 扩展,而不能用于正在调试的程序。 (5认同)