我在Windows框中构建了非dll版本的OpenSSL。根据说明,我修改了构建脚本以包含调试符号。我可以很好地链接他们并且他们运行。但是当我尝试从我的cpp代码中进入openssl函数时,它只是跳过了。我知道这是一个总的菜鸟问题,但我该如何解决这个问题呢?我有所有的源代码和标题,但我认为必须有魔术调用我不知道告诉Visual Studio他们在哪里。或者其他什么。
谢谢! MAC-人遭受苦难 - 在窗口土地
答案 0 :(得分:1)
您可以use dumpbin
with the /pdbpath
选项找到二进制文件的符号文件;如果找不到符号,则需要将它们移动到可以找到符号的位置。
PDB路径通常硬编码到二进制文件中,因此在构建可执行文件后无法移动PDB。您可以use the (undocumented) /pdbpath:none
linker option使用其PDB文件的相对路径构建二进制文件;那么你可以将PDB放在二进制文件旁边,调试器应该找到它。
请注意,仅当二进制文件为linked with the /DEBUG
option时才会生成PDB文件。
答案 1 :(得分:0)
当你构建OpenSSL时,你在哪里指定了符号文件应该去哪里?它与可执行文件位于同一目录中吗?
答案 2 :(得分:0)
符号文件(pdb)仅存在于模块(exe和dll)而不存在于目标文件中。库只是.obj文件的集合。
如果源代码是使用调试信息编译的,那么它将嵌入到.obj文件中,链接器将将这些文件提取到最终的pdb中。你需要的只是你的exe的pdb能够看到OpenSSL代码的符号。
您需要在调试器中设置源路径以包含OpenSSL目录,以便能够将这些符号与源相关联。
如果您使用的是Visual Studio,请确保调试器设置中的“仅调试我的代码”选项(或类似内容)禁用 ...虽然我不认为这会影响代码编译成你的exe。调试器更可能只是不知道源代码的位置。