gpt4 book ai didi

c++ - Windbg 从改变的位置加载符号

转载 作者:太空宇宙 更新时间:2023-11-04 13:09:59 24 4
gpt4 key购买 nike

使用符号窗口 (CTRL + S),我已将 WinDbg 设置为从特定位置加载我的符号。

enter image description here

现在,当我附加我的调试器并尝试查看堆栈窗口时,似乎符号没有真正正确加载。

enter image description here

现在,当我使用 !sym noisy 命令和 .reload/f 时,我从调试器中得到以下信息:

enter image description here

那么,从第三张图来看,为什么还要定义SYMSRV呢?为什么要在文件末尾添加 GUID 前缀?

如果不是将 guid windbg 添加到路径,它就会起作用。我做错了什么。

编辑:进一步查看日志后,我看到调试器尝试从本地驱动器加载符号。

enter image description here

最佳答案

有几种不同的格式可以存储符号。这些是 0 层、2 层和 3 层。

0-tier 基本上是一个平面文件列表,如果您刚刚构建了程序并且所有 PDB 都位于一个文件夹中,那么它是合适的。如果您输入本地路径(如 c:\path)或服务器共享(如 \\server),WinDbg 应考虑 0 层存储布局,但也可以尝试其他布局。

问题是您只能在 0 层存储中存储一个版本的 PDB,这就是存在 2 层和 3 层符号存储的原因。将符号添加到此类存储时,它会考虑 GUID,因此可以存储同一程序的多个版本。 2 层和 3 层符号存储应以 srv* 开头。第 9 channel 中解释了 2 层和 3 层商店之间的确切区别 episode 87并且有可能 convert 2 层商店变成 3 层商店。

不要将 srv* 符号路径语法与 SYMSRV: 调试输出混淆。恕我直言,SYMSRV: 只是 symsrv.dll 的调试消息,因此无需担心。

加载符号的真相只能用Process Monitor来监控.并非记录 WinDbg 搜索符号的所有位置,即使在嘈杂模式下也是如此。

除了符号路径之外,DLL 还包含对 PDB 本地路径的引用,WinDbg 将考虑此路径,与符号路径设置无关。

关于c++ - Windbg 从改变的位置加载符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40356809/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com