山东001在线

 找回密码
 立即注册
搜索
查看: 188|回复: 0

[美女] 看一看:加载了对应的调试符号文件也看不了函数也许是2023/3/26 7:05:20

[复制链接]
  • TA的每日心情
    奋斗
    2023-9-22 14:51
  • 签到天数: 341 天

    [LV.8]以坛为家I

    发表于 2023-3-26 07:05:19 | 显示全部楼层 |阅读模式

    缘起读写驱动的相关知识也可以到网站具体了解一下,有专业的客服人员为您全面解读,相信会有一个好的合作!

    在的过程中遇到了一个小问题——在使用IDA查看反汇编的时候,居然搜索不到相关的函数,在中使用命令也搜不到,即使加载了符号文件也搜不到。比较后发现是:选项导致的。


    初遇问题
    使用IDA打开编译出来的程序,查看反汇编代码,但是没有看到相关函数。











    比较开始以为是IDA加载符号文件的问题,就想着在中使用命令看一下,没想到也查看不了。











    感觉有些离谱,之前一直好好的,而且这个示例程序非常简单。于是,使用编译同样的代码,然后在IDA中查看反汇编的函数,一切正常。又试了试,也一切正常。下图是使用IDA查看生成的程序的情况。











    根据多年的经验,应该是出问题了。难道是在生成的过程中有不管是不是,先看看的内容,看看到底在哪里失败了。


    查看PDB内容
    在上搜索,发现了几个有用的仓库。我列在这里,感兴趣的小伙伴儿可以点进去查看。



    微软官方介绍文件格式的仓库。
    查看程序
    查看的++库,可以基于此开发自己的工具。
    可以查看PE文件或者PDB文件格式的库。

    因为PDBR不用编译即可使用,所以我决定先使用它查看生成的文件。发现什么都没有。这是什么情况赶紧试试和生成的文件,发现可以正确的列出很多符号。











    至此,我更加怀疑是的问题。具体是什么问题呢到底问题出在哪里呢还是要跟踪一下解析过程才能知道。





    既然有现成的工具和代码,就不用自己研究文件格式,再根据格式写解析程序了。我没有跟踪PDBR,而是直接调试的_。


    发现关键线索
    使用打开_\\RPDB,编译。编译成功后,修改解决方案启动工程并设置好调试参数,加载有问题的文件进行调试。简单跟踪几步后,发现在下图中的位置报错返回了。











    从提示看,不能正确解析PDB是因为生成PDB的时候使用了为DEBUG:FASTLINK的选项。





    至此得到了一个非常重要的线索——DEBUG:FASTLINK。赶紧一下。


    搜索
    很就搜到了以下两个非常有用的址:























    根据以上文章,可以得到如下结论:



    为了提高链接速度,从开始引入了DEBUG:选项。


    使用DEBUG:编译选项生成的PDB是,这种缺少私有符号信息,但是可以提高链接速度。


    从VS(也就是)开始,D:将成为默认选项。DEBUG选项等同于DEBUG:。


    可以通过L-D-GDI来设置使用DEBUG:或者DEBUG:FULL。


    可以通过安装目录下的VC\子目录下的工具从获得。


    友情提示:如果有小伙伴儿不清楚各个版本称与版本号的对应关系,可以参考下图。






    看完以上几篇文章基本明白了原因。





    赶紧在中修改对应的设置为DEBUG:FULL,然后在中使用命令查看,果然出现了期待已久的函数。











    当然,肯定也得用转换成试试,结果也是很的。








    说明
    经过验证,使用新建工程后,GDI的默认选项是DEBUG。但是使用默认选项生成的程序在调试的时候,并不存在不能查看符号的问题。看来,又把DEBUG选项处理成DEBUG:FULL了。


    其它资源
    在调查这个问题的时候还搜到一些相关的址,感兴趣的小伙伴儿可以看一下。





    下面这篇文章是译文,讲的是DEBUG:在缩短链接时间上的好处。











    下面这篇是国外友遇到的不能使用DIASDK读取使用DEBUG:选项编译生成的PPDB的问题。











    下面这篇是国外友遇到的,在使用分析使用DEBUG:选项编译的程序,加载符号文件导致的卡死问题。








    总结

    可以使用很多工具查看的内容,比如PDBR。


    使用DEBUG:可以降低链接所需要的时间。


    使用DEBUG:生成的是,这种中并不包含缺少私有符号,调试的时候会有不能查看符号的问题。
    可以使用把转换成。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Archiver|山东001在线 ( ICP11027147 )

    GMT+8, 2026-4-1 14:22 , Processed in 0.041366 second(s), 19 queries , Gzip On.

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表