繁体   English   中英

在 Visual Studio 2008 中单步执行 C# 时如何找到方法调用者?

[英]How can I find a method caller when stepping through C# in Visual Studio 2008?

如果我在方法上设置断点,当在 Visual Studio 2008 中遇到断点时,如何查看调用了该方法的内容?

检查调用堆栈窗口(调试、Windows、调用堆栈)。 双击每个条目将带您到调用语句。 您还可以右键单击它以启用/禁用显示外部代码项和来自其他线程的调用。

当断点被击中时,您可以查看整个调用堆栈。 您可以通过调试菜单->Windows->调用堆栈来打开该窗口。

您也可以通过快捷键 Alt+Ctrl+C 调出它

编辑:您还可以右键单击函数名称,然后查看“调用方图”,它会显示您的方法的所有调用方。 或者,您可以使用 Call Browser(通过转到 View->Other windows->Call Browser)并搜索您的方法名称。

如果在用户设置的断点处看不到调用堆栈中的任何内容,则通常意味着它是从本机代码调用的。

无法获取堆栈的另一种情况:您点击 Debug>Break All 并且主线程处于等待/睡眠状态,调试器在构建调用堆栈时可能会出现问题。 我相信调试器使用主线程进行隐式函数评估。

尝试附加(或启动)混合模式(本机和托管)代码调试器,看看是否能解决问题。

如果您在“调用堆栈”窗口中看不到任何内容,那么肯定有问题。 我会建议著名的 R 动作序列:

  • 重试
  • 重新编译
  • 重新开始
  • 重新安装:)

如果断点位于由事件引发的函数中,则您可能没有返回调用者的直接调用堆栈,并且需要启用查看所有代码,而不仅仅是“仅我的代码”。

对于 Visual Studio 2019 打开View菜单并选择Call Hierarchy ,或只需按CTRL+ALT+K

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM