windbg符号文件无法解决

时间:2016-05-27 07:25:30

标签: c windbg symbols pdb dbg

我的可执行文件是setup.exe,我在同一目录c:\ade\bpurana\.ade\view_storage\bpurana_oui_424\oui\cd\disk1

中有一个名为setup.pdb的pdb文件

我的符号文件路径是

cache*c:\symbols;srv*https://msdl.microsoft.com/download/symbols;c:\ade\bpurana\.ade\view_storage\bpurana_oui_424\oui\cd\disk1

当我使用此

重新加载时
.reload /f 

我可以看到这个错误:

SYMSRV:  c:\symbols\image00000001`3f6b0000.dbg\574587D664000\image00000001`3f6b0000.dbg not found
SYMSRV:  c:\symbols\image00000001`3f6b0000.dbg\574587D664000\image00000001`3f6b0000.dbg not found
SYMSRV:  https://msdl.microsoft.com/download/symbols/image00000001`3f6b0000.dbg/574587D664000/image00000001`3f6b0000.dbg not found
DBGHELP: c:\ade\bpurana\.ade\view_storage\bpurana_oui_424\oui\cd\disk1\install\image00000001`3f6b0000.dbg - file not found
DBGHELP: c:\ade\bpurana\.ade\view_storage\bpurana_oui_424\oui\cd\disk1\install\.exe\image00000001`3f6b0000.dbg - path not found
DBGHELP: c:\ade\bpurana\.ade\view_storage\bpurana_oui_424\oui\cd\disk1\install\symbols\.exe\image00000001`3f6b0000.dbg - path not found
DBGHELP: c:\ade\bpurana\.ade\view_storage\bpurana_oui_424\oui\cd\disk1\install\setup.pdb\image00000001`3f6b0000.dbg - path not found
DBGHELP: c:\ade\bpurana\.ade\view_storage\bpurana_oui_424\oui\cd\disk1\install\setup.pdb\.exe\image00000001`3f6b0000.dbg - path not found
DBGHELP: c:\ade\bpurana\.ade\view_storage\bpurana_oui_424\oui\cd\disk1\install\setup.pdb\symbols\.exe\image00000001`3f6b0000.dbg - path not found
DBGHELP: C:\ADE\bpurana\.ade\view_storage\bpurana_oui_424\oui\cd\Disk1\install\image00000001`3f6b0000.dbg - file not found
DBGHELP: C:\ADE\bpurana\.ade\view_storage\bpurana_oui_424\oui\cd\Disk1\install\.exe\image00000001`3f6b0000.dbg - path not found
DBGHELP: C:\ADE\bpurana\.ade\view_storage\bpurana_oui_424\oui\cd\Disk1\install\symbols\.exe\image00000001`3f6b0000.dbg - path not found
DBGHELP: image00000001`3f6b0000 missing debug info.  Searching for pdb anyway
DBGHELP: Can't use symbol server for image00000001`3f6b0000.pdb - no header information available
DBGHELP: c:\ade\bpurana\.ade\view_storage\bpurana_oui_424\oui\cd\disk1\install\image00000001`3f6b0000.pdb - file not found
DBGHELP: c:\ade\bpurana\.ade\view_storage\bpurana_oui_424\oui\cd\disk1\install\exe\image00000001`3f6b0000.pdb - file not found
DBGHELP: c:\ade\bpurana\.ade\view_storage\bpurana_oui_424\oui\cd\disk1\install\symbols\exe\image00000001`3f6b0000.pdb - file not found
DBGHELP: c:\ade\bpurana\.ade\view_storage\bpurana_oui_424\oui\cd\disk1\install\setup.pdb\image00000001`3f6b0000.pdb - file not found
DBGHELP: c:\ade\bpurana\.ade\view_storage\bpurana_oui_424\oui\cd\disk1\install\setup.pdb\exe\image00000001`3f6b0000.pdb - file not found
DBGHELP: c:\ade\bpurana\.ade\view_storage\bpurana_oui_424\oui\cd\disk1\install\setup.pdb\symbols\exe\image00000001`3f6b0000.pdb - file not found
DBGHELP: C:\ADE\bpurana\.ade\view_storage\bpurana_oui_424\oui\cd\Disk1\install\image00000001`3f6b0000.pdb - file not found
DBGHELP: image00000001`3f6b0000.pdb - file not found
*** ERROR: Module load completed but symbols could not be loaded for image00000001`3f6b0000 

我想知道

  1. 当pdb已存在于路径中时,为什么要查找dbg文件。
  2. 为什么要引用image00000001`3f6b0000.pdb;什么时候setup.pdb在符号路径?
  3. 此图片在哪里<>文件名是从?
  4. 填充的

    编辑1:

    用于编译的命令:

        icl.exe /nologo /MTd /W3 /Gm /GX /Zi /Od /D "WIN64" /D "_DEBUG" /D   "_WINDOWS" /Fp".\win64\debug\setup.pch" /YX /Fo".\win64\debug\\" /Fd".\win64\debug\\" /c ..\c\runInstaller.c
    

    编辑2:

    这是我在exe文件上尝试使用cdb时看到的内容。它似乎有一个图像<>可执行的。

     C:\Program Files\Debugging Tools for Windows (x64)>cdb.exe -c "q" C:\ADE\bpurana_oui_win\oui\cd\Disk1\install\setup.exe  | grep -A 1 -i Execu*
     Executable search path is:
     ModLoad: 00007ff7`e4e10000 00007ff7`e4e74000   image00007ff7`e4e10000
    

    ICL版本是:

    [C:\ADE\bpurana_oui_win\oui]icl /version
    Intel(R) C++ Intel(R) 64 Compiler XE for applications running on Intel(R) 64, Version 14.0.4.237 Build 20140805
    

    版权所有(C)1985-2014 Intel Corporation。保留所有权利。

    即便如此,问题仍然存在,还有什么我需要解决的问题吗?

1 个答案:

答案 0 :(得分:0)

带有单个src文件的

目录

:\>ls -l
total 4
-rw-rw-rw-  1 HP 0 63 2016-05-27 13:51 hw.cpp

src是一个简单的hellow orld

:\>cat hw.cpp
#include <stdio.h>
void main (void)
{
        printf("hello");
}

使用Debug info

编译
:\>cl /nologo /Zi /Fe:hwdbg.exe hw.cpp
hw.cpp

编译时没有调试信息

:\>cl /nologo /Fe:hwnodbg.exe hw.cpp
hw.cpp

在Pe头中为nodbg和dbg exes

转储Debug Directory的内容
:\>dumpbin /nologo /headers hwdbg.exe hwnodbg.exe | grep -i -A 4 Debug*
           5A220 [      38] RVA [size] of Debug Directory
xxxx

    57480732 cv    38 0005B048 59C48 Format: RSDS, {2233DB57-2608-46AF-A94C-0AB233BB333C}, 
--
           164B0 [      1C] RVA [size] of Debug Directory
xxxxx

    57480738 coffgrp      300 000165F4    159F4

在windbg中加载可执行文件并检查图像名称

:\>cdb.exe -c "q" hwdbg.exe | grep -A 1 -i Execu*
Executable search path is:
ModLoad: 01070000 010d5000   hwdbg.exe

:\>cdb.exe -c "q" hwnodbg.exe | grep -A 1 -i Execu*
Executable search path is:
ModLoad: 01320000 0133c000   image01320000