在Visual Studio中调试代码时,如果将鼠标悬停在某个属性上,该属性的主体将被执行。当代码执行时,是否有可能由于调试程序而不是由于正常的代码执行而确定它正在执行?是否可以确定当前线程是否为“调试器”?
要清楚,我不是在寻找Debugger.IsAttached。我正在寻找一些我将命名为“Debugger.IsPaused”的东西。有这样的事吗?我希望看到CurrentThread会揭示一些东西,比如被命名为“调试器线程”或具有有意义的ManagedThreadID,但该线程未命名,并且托管线程ID不是特殊的。
我不知道很多关于C#,但你不能这样做,如果(线程==调试.CurrentThread)? – 2013-08-16 17:10:19
备注:我相信“get property”的执行将在原始线程上完成,而不是“特殊调试器线程”。作为hack你可能会尝试检查“我的调用堆栈看起来可疑”属性的代码。 –
@AlexeiLevenkov我喜欢检查可疑堆栈帧的想法,但遗憾的是堆栈在调试器中看起来与通常情况下完全相同。 – MarkPflug