“Just My Code”功能允许将调试操作限制为用户代码(未优化的代码和可用的pdb)。
只要程序流在Visual Studio中调用“我的代码”,是否可以中断?
潜在的应用程序:在复杂的第三方应用程序使用的库中调试问题时,在出现问题时调用的任何内容是一个很好的起点。在输入自己的代码时断开将允许在没有过多记录的情况下执行此操作。
答案 0 :(得分:1)
看起来并非如此。
但是,如果所有自己的代码都在几个名称空间内,windbg
可以用作解决方法(以下是非托管代码;我假设这也是托管代码的一种方式):< / p>
> bm ModuleName!NamespaceName::*
将为给定命名空间内的任何入口点设置断点。如果所有访问都是单线程的,那么windbg甚至可以打印执行中执行的所有实际条目的列表:
> bm ModuleName!NamespaceName::* "bd *; ln; l+t; p \"dv; pt \\\"be *; r $retreg; g\\\"\""
将向所有可能自动执行记录并再次退出的操作的可能入口点添加断点:
bd *
禁用所有断点,因为我们正在输入&#34;自己的代码&#34; ln
将信息打印到通话地点l+t; p "[...]"
跳过调用约定处理dv
打印本地(包括现在处理的参数)pt "[...]"
跳到方法结束be *
重新启用断点,因为我们正在离开&#34;自己的代码&#34; r $retreg
log方法结果(如果调用约定和结果类型导致使用结果寄存器)g
继续下一个断点从日志中通常可以至少为第二次调试运行确定合理的断点和断点条件(在任何调试器中,包括Visual Studio)。