【发布时间】:2011-07-17 17:40:13
【问题描述】:
Visual Studio 在调试时是否会引发任何我可以在代码中订阅的事件?具体来说,我想知道调试器何时分离或停止。谢谢
【问题讨论】:
-
不,调试器必须始终在另一个进程中运行。你只能轮询。可以设置断点和编辑变量值。
标签: visual-studio visual-studio-2010 events debugging
Visual Studio 在调试时是否会引发任何我可以在代码中订阅的事件?具体来说,我想知道调试器何时分离或停止。谢谢
【问题讨论】:
标签: visual-studio visual-studio-2010 events debugging
在单独的线程中,您可以检查Debugger.IsAttached 方法并相应地生成事件。
编辑:我刚刚做了这个,看看它是否有效。
public class DebuggerEvents {
public delegate void DebuggingStatusChanged(EventArgs e);
public event DebuggingStatusChanged DebuggerAttached;
public event DebuggingStatusChanged DebuggerUnattached;
private readonly Thread workerThread;
public DebuggerEvents() {
var threadStart = new ThreadStart(BackgoundWorker);
workerThread = new Thread(threadStart);
workerThread.Start();
}
private void BackgoundWorker() {
bool currentStateflag = Debugger.IsAttached;
while (true) {
if (Debugger.IsAttached && !currentStateflag){
DebuggerAttached(new EventArgs());
currentStateflag = true;
}
if (!Debugger.IsAttached && currentStateflag){
DebuggerUnattached(new EventArgs());
currentStateflag = false;
}
Thread.Sleep(100);
}
}
}
【讨论】:
试试这个:
System.Diagnostics.Debugger.IsAttached
还要查找条件编译符号,注意DEBUG符号。
【讨论】: