【问题标题】:How do I set a breakpoint on every access to a class如何在每次访问类时设置断点
【发布时间】:2011-04-03 16:50:47
【问题描述】:

在使用第三方系统时,尤其是动态加载提供程序、控制器、组件等的非常可配置的系统时,我有时只想知道某个对象或类何时被访问。通常,我会在源代码中的任何潜在行上放置一个断点(这很麻烦,但它有效),但如果源代码不可用:

如何指示 Visual Studio 2010 Ultimate 中断对给定类的任何和每次访问?

注意:就我的经验而言,这通常是不可能的,但我希望看到它得到确认

【问题讨论】:

    标签: c# .net visual-studio debugging breakpoints


    【解决方案1】:

    您可以单击调试 > 新断点 > 函数处的断点Ctrl-B 直接将您带到那里。它可以让你在特定的功能上休息。

    在调试过程中,您可以在 Breakpoints-window 中查看该方法是否已找到并且是否会被命中(红色圆形图标)(白色带有圆圈图标,截至禁用断点),就像普通断点一样。

    【讨论】:

    • 谢谢,这对于单一方法来说确实很方便,即使它没有被加载。但这并不能帮助我每次访问一个类,我似乎也无法以这种方式为ctorcctor 设置断点(但也许我需要进行更多实验)。
    • @Abel:试试Namespace.ClassName.ClassName
    • 我不能让它适用于所有类型和方法,但我只是决定购买 Reflector Professional(使用了多年的免费版),它允许我在反射上调试和设置断点任何已加载或引用的程序集的代码。
    • 您的建议至少在某些情况下有效,虽然不是一个完整的答案(那就是:不可能),但它仍然有帮助。谢谢。
    • @SLaks,在尝试this 时,我发现断点编辑器对话框接受只指定没有函数名或通配符的类名,但在运行时,断点显得空心带有感叹号,什么也不做。然后我正确地阅读了你的评论......它就像一个魅力。 两次写入类名为什么没有地方记录这让我感到惊讶?
    【解决方案2】:

    有一次(VS2008 之前),您可以通过全选 (ctrl-a) 然后设置断点 (F9) 在文件的每一行设置断点。

    如果我没记错的话,要在每个方法的入口上只设置一个,需要一个宏。查看 John Robbins 的博客作为可能的来源:http://www.wintellect.com/CS/blogs/jrobbins/

    [编辑:ctrl-A,F9 在 2010 或 2008 年不起作用,所以它必须是早期版本,我记得来自]

    【讨论】:

    • 在选择多行的情况下按 F9 只会在当前行设置断点。但是你制作macr的建议很好。
    • @Abel: .. 它会清除所选代码中已经存在的任何其他断点。这是自一些早期版本以来的变化(它在 2008 年不起作用,所以也许我记得 2005 年?)。我会更新答案。
    • 谢谢。而且我使用的是 2010 年,我真的不记得早期版本中的内容了,但话又说回来,总有一些功能在下一个版本出现之前是你没有发现的。
    【解决方案3】:

    我刚刚为此制作了一个 Visual Studio 2010 插件。检查这个:http://weblogs.asp.net/uruit/archive/2011/08/04/visual-studio-2010-addin-setting-a-class-breakpoint.aspx

    更新

    这个项目现在存在于Github。随意贡献。

    【讨论】:

    • 它对我不起作用。加载项管理器列出了“BreakAll”,但调试菜单中没有新的菜单项。 Ctrl+D,Z(如截图所示)也不起作用。
    • @Qwertie 检查 Github 存储库以获取项目的最新版本。您还可以查看其中的已知问题列表。
    【解决方案4】:

    不是最优雅的,但是如果你 Ctrl+F public 那么你可以在 F9 [set breakpoint] 然后 F3 [查找下一个] 在类的每个公共入口点设置断点。

    您可能还想为protectedinternal 入口点以及任何显式接口实现(没有public 的声明)添加断点

    【讨论】:

      猜你喜欢
      • 2017-03-29
      • 1970-01-01
      • 2011-05-16
      • 2023-01-07
      • 1970-01-01
      • 2013-10-03
      • 1970-01-01
      • 2010-12-23
      相关资源
      最近更新 更多