datagrip调试存储过程_5. windbg调试符号表设置

调试代码时,调试器需要知道符号表的查询路径才可以定位到正确的符号表,就像链接器一样需要设置正确的链接路径,否则就会有链接错误。

一些编译器(如Microsoft Visual Studio)将符号文件放在与二进制文件相同的目录中。符号文件和检查的二进制文件包含路径和文件名信息。此信息通常使调试器能够自动查找符号文件。如果您正在构建可执行文件的计算机上调试用户模式进程,并且如果符号文件仍在其原始位置,调试器可以在不设置符号路径的情况下定位符号文件。

在大多数其他情况下,必须将符号路径设置为指向符号文件的位置。windbg使用".sympath"命令来设置符号路径,也可以在"File-->Symbol File Path"窗口中设置。

49f1a43bd958c0b1805d75d7af99338e.png

在此之前,我们先了解一些路径的规则:

  • 调试器的符号路径是由多个目录路径组成的字符串,路径之间用分号分隔。

  • 支持相对路径。但是,除非您总是从相同的目录启动调试器,否则您应该在每个路径之前添加一个驱动器号或网络共享。还支持网络共享。

  • 对于符号路径中的每个目录,调试器在三个目录中查找。例如,如果符号路径包含c:\MyDir目录,而调试器正在查找DLL的符号信息,调试器首先在c: MyDir\symbols\ DLL中查找,然后在c:\MyDir\ DLL中查找,最后在c:\MyDir中查找。调试器然后对符号路径中的每个目录重复这个过程。最后,调试器查看当前目录,然后查看附加了\dll的当前目录。(调试器附加\dll、\exe或\sys,这取决于它正在调试的二进制文件。)

  • 符号文件具有日期和时间戳。您不必担心调试器会使用它在这个序列中首先找到的错误符号。它总是在它正在调试的二进制文件上寻找与时间戳匹配的符号。

使用".sympath"会有很多种情景,可以从本地加载符号文件,可以从共享网络加载,也可以从符号服务器加载,同时可以选择缓存在本地(这样方便以后使用时加快加载时间)或者不缓存。

从本地计算机加载,符号文件放在两个不同的路径

.sympath C:/demo/x64/Debug;C:/demo/x64/Debug_bak.sympath C:/demo/x64/Debug.sympath+ C:/demo/x64/Debug_bak

从共享网络加载,可以缓存在本地;

//缓存在本地默认位置.sympath cache*;\\sharefolder//缓存在本地指定位置.sympath cache*C:\local_symbols;\\sharefolder

从符号服务器加载,可以缓存在本地,也可以不缓存;

//从符号服务器默认符号存储区加载符号.sympath srv*//从符号服务器指定符号存储区加载符号(微软符号服务器).sympath srv*https://msdl.microsoft.com/download/symbols//从符号服务器指定符号存储区加载符号,并缓存在本地.sympath srv*C:\server_symbols*https://msdl.microsoft.com/download/symbols//指定两个路径,一个可以手动存放修改的符号文件夹,一个存放来自服务器的符号表.sympath C:\regular_symbols;srv*C:\server_symbols*https://msdl.microsoft.com/download/symbols//结合使用cache*和srv*//从符号服务器加载符号,并缓存到本地指定目录.sympath cache*C:\local_symbols;srv*https://msdl.microsoft.com/download/symbols
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值