Visual Studio在调试时提出了什么事件,我可以在代码中订阅?具体来说,我想知道调试器何时分离或停止。谢谢从正在调试的代码附加到调试器事件?
1
A
回答
2
在一个单独的线程中,您可以检查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);
}
}
}
1
试试这个:
System.Diagnostics.Debugger.IsAttached
而且查找条件编译符号,并注意调试符号。
不,调试器必须始终运行在另一个进程中。你只能轮询。设置断点并编辑变量值是可能的。 – 2011-03-17 22:43:03