验证符号文件的又一方法(!itoldyouso)

如果您正在开发软件,很可能遇到了“不匹配的PDB”调试器错误。当您将调试器指向错误的符号路径时,通常会发生这种情况。 但有时你确信你所指向的符号是正确的符号,这让你想知道为什么调试器认为这些符号不匹配。
 "!sym noisy“将告诉您windows调试器如何搜索符号,并在遇到不匹配的pdb时报告它们,但它不会告诉您符号不匹配的原因。针对这一点,我们可以用扩展命令!itoldyouso

!itoldyouso简介

这个扩展命令根据模块测试符号文件的有效性。模块可以由其名称或基址指定。如果未指定符号文件,则测试加载的符号。否则,如果指定了pdb或dbg符号文件路径,则针对加载的模块对其进行测试。

语法

!IToldYouSo <module> [symbol]

  • module
    模块,可以是名称也可以是地址
  • symbol
    符号文件路径

用例

  • 匹配的情况
    0:000> !itoldyouso libcef F:\..\libcef.dll.pdb

    libcef.dll
        Timestamp: 5A9FC023
      SizeOfImage: 2F86000
              pdb: F:\Code\cef\2623\chromium\src\out\Release\libcef.dll.pdb
          pdb sig: BE989A0F-1981-4A33-8F9C-44FDDE3E2BB2
              age: 1

    libcef.dll.pdb
          pdb sig: BE989A0F-1981-4A33-8F9C-44FDDE3E2BB2
              age: 1

    MATCH: libcef.dll.pdb and libcef.dll
  • 不匹配的情况
    0:000> !itoldyouso libcef F:\..\libcef.dll1.pdb

    libcef.dll
        Timestamp: 5A9FC023
      SizeOfImage: 2F86000
              pdb: F:\Code\cef\2623\chromium\src\out\Release\libcef.dll.pdb
          pdb sig: BE989A0F-1981-4A33-8F9C-44FDDE3E2BB2
              age: 1

    F:\..\libcef.dll1.pdb - Could not find PDB.


    0:000> !itoldyouso libcef F:\..\Update.pdb

    libcef.dll
        Timestamp: 5A9FC023
      SizeOfImage: 2F86000
              pdb: F:\Code\cef\2623\chromium\src\out\Release\libcef.dll.pdb
          pdb sig: BE989A0F-1981-4A33-8F9C-44FDDE3E2BB2
              age: 1

    Update.pdb
          pdb sig: 7A98EDE4-B661-401E-86E5-2A9BFF443B9E
              age: 1

    sig MISMATCH: Update.pdb and libcef.dll

posted on 2019-11-19 10:55  活着的虫子  阅读(641)  评论(0编辑  收藏  举报

导航