【发布时间】:2012-08-27 00:55:10
【问题描述】:
我的代码有什么方法可以区分“我在正常进程上下文中执行”和“我已从调试器的即时窗口执行”之间的区别?
我有一个公开公共属性的库对象。当使用该库的发布版本,但调试已加载包含该库的 DLL 的应用程序时,如果我从即时窗口 (x.prop = true) 更改属性,我希望我的属性代码检测到这一点并执行不同。
有没有办法检测到这一点?
为了方便起见,当我使用该库的调试版本时,我也希望它能够工作。所以,我不能只检查是否连接了调试器,然后从那里分支。
【问题讨论】:
-
在您等待某人回答时,尝试使用 StackTrace 类,看看您是否可以从调用堆栈中分辨出调用来自何处。很明显它来自调试器程序集。
-
@Paul,谢谢,但该系统使用 Debugger.IsAttached,我指定它不能在这里工作,因为当我调试库本身时,这段代码也会运行......
-
@Habo,谢谢,我确实先检查了这个。立即窗口显然非常擅长直接挂接到现有堆栈中,因为堆栈中没有提及它。堆栈中除了通常会存在的东西外,什么都没有。我很失望。
-
+1 好问题,相关stackoverflow.com/a/10918403/495455 - 如果这个问题没有解决方案,解决方法是在从即时窗口调用时使用重载方法以不同方式执行。
标签: c# .net visual-studio-debugging immediate-window