如何设置静态库的调试路径

clever101
博客专家认证
2019-05-10 08:19:09
我用vs2013帮同事编译了一个静态库,然后把静态库的源码文件、lib文件和pdb文件给他了。pdb文件他放在exe所在的目录下。调试时按F11死活进入不了这个静态库的源码文件。请问在哪里可以设置pdb路径和静态库路径来达到进入静态库的源码文件调试的目的?
...全文
459 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
clever101 2019-06-14
  • 打赏
  • 举报
回复
引用 4 楼 离水的鱼儿 的回复:
[quote=引用 3 楼 宁可十年不将军,不可一日不拱卒 的回复:]静态库在最终链接的时候是把代码直接链接到最终的生成文件里的。这就决定了不可能把静态库的pdb文件和生成文件放在一起来调试。静态库的生成目录里是找不到pdb文件的,静态库的pdb文件是在中间目录里的,和obj文件在一起。静态库pdb文件的名字,一般默认都是叫vcxxx.pdb,而不是像动态库或者可执行文件那样和生成文件名字一样。 编译器在编译静态库的时候直接将pdb文件的绝对路径写在了obj文件里。链接器通过这个信息就可以找到静态库的pdb文件。链接器链接的时候如果找不到绝对路径的pdb文件还会搜索和静态库lib文件放在一起的和原pdb文件同名的pdb文件。 但是所有的静态库的默认pdb文件名字都是一样的,如果把几个静态库放在一起pdb文件就会冲突。所以我们要设置静态库的pdb文件名。通常我们设为和库名一致。一种设置方法是在VS的c/c++选项里设置输出文件设置页的程序数据库名项。另一种设置方法是使用命令行参数里使用/Fd选项设置。 想要调试静态库只要保持静态库的pdb文件位置不变或者将静态库的pdb文件和静态库lib文件放在一起,然后正常链接。调试信息就被包含到了最终生成的文件的pdb文件里,需要调试的时候直接加载最终生成的文件的pdb文件,和正常调试动态库或者可执行文件一样。 详细步骤你可以参考以下链接:https://stackoverflow.com/questions/7575298/static-library-debug-symbols
此楼给你答案了,调试一定是把pdb拿到放到你debug目录下 就可以调试库了[/quote] 想要调试静态库只要保持静态库的pdb文件位置不变或者将静态库的pdb文件和静态库lib文件放在一起,并不是把pdb放到debug目录下的。
离水的鱼儿 2019-06-14
  • 打赏
  • 举报
回复
引用 3 楼 宁可十年不将军,不可一日不拱卒 的回复:
静态库在最终链接的时候是把代码直接链接到最终的生成文件里的。这就决定了不可能把静态库的pdb文件和生成文件放在一起来调试。静态库的生成目录里是找不到pdb文件的,静态库的pdb文件是在中间目录里的,和obj文件在一起。静态库pdb文件的名字,一般默认都是叫vcxxx.pdb,而不是像动态库或者可执行文件那样和生成文件名字一样。
编译器在编译静态库的时候直接将pdb文件的绝对路径写在了obj文件里。链接器通过这个信息就可以找到静态库的pdb文件。链接器链接的时候如果找不到绝对路径的pdb文件还会搜索和静态库lib文件放在一起的和原pdb文件同名的pdb文件。 但是所有的静态库的默认pdb文件名字都是一样的,如果把几个静态库放在一起pdb文件就会冲突。所以我们要设置静态库的pdb文件名。通常我们设为和库名一致。一种设置方法是在VS的c/c++选项里设置输出文件设置页的程序数据库名项。另一种设置方法是使用命令行参数里使用/Fd选项设置。

想要调试静态库只要保持静态库的pdb文件位置不变或者将静态库的pdb文件和静态库lib文件放在一起,然后正常链接。调试信息就被包含到了最终生成的文件的pdb文件里,需要调试的时候直接加载最终生成的文件的pdb文件,和正常调试动态库或者可执行文件一样。

详细步骤你可以参考以下链接:https://stackoverflow.com/questions/7575298/static-library-debug-symbols
此楼给你答案了,调试一定是把pdb拿到放到你debug目录下 就可以调试库了
clever101 2019-06-13
  • 打赏
  • 举报
回复
静态库在最终链接的时候是把代码直接链接到最终的生成文件里的。这就决定了不可能把静态库的pdb文件和生成文件放在一起来调试。静态库的生成目录里是找不到pdb文件的,静态库的pdb文件是在中间目录里的,和obj文件在一起。静态库pdb文件的名字,一般默认都是叫vcxxx.pdb,而不是像动态库或者可执行文件那样和生成文件名字一样。
编译器在编译静态库的时候直接将pdb文件的绝对路径写在了obj文件里。链接器通过这个信息就可以找到静态库的pdb文件。链接器链接的时候如果找不到绝对路径的pdb文件还会搜索和静态库lib文件放在一起的和原pdb文件同名的pdb文件。 但是所有的静态库的默认pdb文件名字都是一样的,如果把几个静态库放在一起pdb文件就会冲突。所以我们要设置静态库的pdb文件名。通常我们设为和库名一致。一种设置方法是在VS的c/c++选项里设置输出文件设置页的程序数据库名项。另一种设置方法是使用命令行参数里使用/Fd选项设置。

想要调试静态库只要保持静态库的pdb文件位置不变或者将静态库的pdb文件和静态库lib文件放在一起,然后正常链接。调试信息就被包含到了最终生成的文件的pdb文件里,需要调试的时候直接加载最终生成的文件的pdb文件,和正常调试动态库或者可执行文件一样。

详细步骤你可以参考以下链接:https://stackoverflow.com/questions/7575298/static-library-debug-symbols
clever101 2019-05-11
  • 打赏
  • 举报
回复
引用 1 楼 smwhotjay 的回复:
那你同事最好也用vs2013
他用的就是vs2013。只是如何让他不用重编静态库就能调试进去。
smwhotjay 2019-05-10
  • 打赏
  • 举报
回复
那你同事最好也用vs2013

16,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧