【问题标题】:How to get a full call stack in Visual Studio 2005?如何在 Visual Studio 2005 中获得完整的调用堆栈?
【发布时间】:2010-09-11 18:43:45
【问题描述】:

如何获得使用 Visual Studio 2005 开发的 c++ 应用程序的完整调用堆栈?我想要一个完整的调用堆栈,包括系统库中的代码。

我是否必须更改 Visual Studio 中的某些设置,还是必须安装其他软件?

【问题讨论】:

    标签: c++ visual-studio debugging callstack visual-c++-2005


    【解决方案1】:
    1. 获取所有项目依赖项的调试信息。这在项目属性的“配置属性 -> C/C++ -> 常规”部分下指定。

    2. 在菜单上,转到“工具 -> 选项”,然后选择“调试 -> 符号”。

    3. 添加指向微软免费符号服务器“symsrvsymsrv.dllc:\symbols*http://msdl.microsoft.com/downloads/symbols”的新符号位置(文件夹图标)

      李>
    4. 用本地的某个地方填写“缓存符号”字段,这样您就不会一直上网。

    【讨论】:

    • 您可能想修正 #3 中拼写错误的“smysrv”。
    【解决方案2】:

    同意 Clay,但对于 Symbols Server,您应该从“Debugging Tools For Windows”获取最新的 symsrv.DLL,Microsoft 可免费下载。

    (既然你明确询问了你需要下载什么,我想你还没有)

    【讨论】:

      【解决方案3】:

      或者,可选地(假设未安装 Visual Studio),获取Windows Debugging Tools 的副本,安装并从调试器 (windbg.exe) 中运行您的应用程序,或者将其附加到已运行的应用程序:

      windbg[.exe] -pn 程序.exe

      windbg[.exe] -p process_id

      在您想要观察堆栈跟踪的点处中断调试器 (Ctrl+Break)。切换到感兴趣的线程(很可能是执行的主线程):

      ~0s

      修复系统模块的符号(如果可用,也可能用于应用程序):

      * 修复 app
      .sympath path_to_app_symbols 的符号
      * 配置调试器将下载和存储系统符号的位置
      .symfix+ path_where_system_symbols_will_be_stored
      * 强制调试器重新加载符号
      .reload

      发出调用堆栈命令:

      kb

      【讨论】:

        猜你喜欢
        • 2010-11-09
        • 2018-02-19
        • 2011-03-01
        • 2020-12-03
        • 2022-07-07
        • 1970-01-01
        • 2012-06-29
        • 2015-06-08
        • 1970-01-01
        相关资源
        最近更新 更多