windows符号文件的设置

    问题的起因在于想用livekd调试内核,需要指定相应的符号文件。这个问题困扰了我好几天。系统是win2k+sp4中文版,一开始下载了Windows 2000 Customer Support Diagnostics 和sp4 symbols,依次安装之后,运行livekd指定路径,每次都提示:"Could not resolve symbols for ntoskrnl.exe"然后退出,但是目录下ntoskrnl.dbg和ntoskrnl.pdb都是存在的。运行windbg载入一个程序,每次都有如下警告:*** WARNING: symbols timestamp is wrong 0x4060ef33 0x38175b30 for ntdll.dll。lm只能看到ntdll.pdb文件被认出来了,其他dll比如gdi32.dll文件虽然目录下有对应的符号文件也没认出来。
     折腾了若干次都是如此,认定应该是符号文件不匹配,可是当下也没辙了。想重装系统成win2k英文版测试一下。幸好昨天在轻描淡写发了个帖问,得到如下回答“你不要自己到¥MS的网站上去下那些符号文件,哪怕版本号啊这些都认为是正确的。直接用WINDBG去下,WINDBG不是有个选项吗,它知道要到哪里去下,并保证下下来正确的”。
     于是,仔细看windbg的帮助,终于搞定了。如下:
     设置环境变量_NT_SYMBOL_PATH=srv*c:/sym*http://msdl.microsoft.com/download/symbols
     其中 http://msdl.microsoft.com/download/symbols是微软的符号服务器,c:/sym是保存符号的本地文件夹,可以随便设置。前提是必须安装Debugging Tools for Windows,因为需要里面的symsrv.dll才能下载符号文件。
     运行livekd,等待一会之后,它自动下载了ntoskrnl的符号文件,成功进入kd>提示符。
     windbg->symbol search path也设置为srv*c:/sym*http://msdl.microsoft.com/download/symbols。用它载入一个程序,lm查看加载的模块,需要强制下载某个模块的符号,比如user32.dll,则在windbg命令行输入ld user32,注意不要加文件后缀。一段时间之后,它已经从服务器上下载了符号文件,提示Symbols loaded for user32。用lm查看发现已经加载了user32.pdb符号文件。现在打开c:/sym文件夹,会发现多了两个文件夹分别名为user32.dbg和user32.pdb,里面包含了正确的符号文件。下一次强制加载user32符号文件的时候,会快一些,因为直接从c:/sym读取而不需要从服务器下载。
      从网上找的vc.net设置符号服务器的方法:
    

设置符号服务器的路径

  1. 在 Visual Studio 中打开该项目。
  2. 在“解决方案资源管理器”视图中选择解决方案的名称。
  3. 从“项目”菜单中选择“设置启动项目”。
  4. 在“解决方案 <项目> 属性页”对话框中,打开“通用属性”文件夹,单击“调试符号文件”。
  5. 在“在这些路径中搜索符号文件”框中创建新的行,方法是双击空的新行或单击“新建行”按钮。
  6. 在新行中输入符号服务器的路径。
    • 若要使用 Microsoft 公共符号服务器,请输入:
      srv*c:/cache*http://msdl.microsoft.com/download/symbols; 
    • 若要使用 Intranet 符号服务器,请输入:
      srv*//server/path/symbols;
    • 若要使用本地计算机上的符号服务器,请输入:
      c:/path/symbols;
  7. 不要单击“检查项”按钮。
  8. 单击“确定”按钮。
  9. 将 symsrv.dll 从 Visual Studio .NET 安装盘复制到 C:/Program Files/Microsoft Visual Studio .NET 2003/Common7/IDE。 
       
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值