有没有办法检测调试器是否在内存中运行?
这里是关于Form Load伪代码的。
if debugger.IsRunning then
Application.exit
end if
编辑:原始标题是“检测内存调试程序”
答案 0 :(得分:33)
尝试以下
if ( System.Diagnostics.Debugger.IsAttached ) {
...
}
答案 1 :(得分:5)
在使用它关闭在调试器中运行的应用程序之前要记住两件事:
现在,为了更有用,下面是如何使用此检测来使调试器中的func eval更改程序状态,如果由于性能原因而有缓存是一个延迟评估的属性。
private object _calculatedProperty;
public object SomeCalculatedProperty
{
get
{
if (_calculatedProperty == null)
{
object property = /*calculate property*/;
if (System.Diagnostics.Debugger.IsAttached)
return property;
_calculatedProperty = property;
}
return _calculatedProperty;
}
}
我有时也使用过这种变体来确保我的调试器步骤不会跳过评估:
private object _calculatedProperty;
public object SomeCalculatedProperty
{
get
{
bool debuggerAttached = System.Diagnostics.Debugger.IsAttached;
if (_calculatedProperty == null || debuggerAttached)
{
object property = /*calculate property*/;
if (debuggerAttached)
return property;
_calculatedProperty = property;
}
return _calculatedProperty;
}
}