我有一个来自OpenSSL(特别是SSL_read
)的段错误,我想调试。我认为这里采取的最佳步骤是使用调试符号自己构建库,这样我就可以进入函数并查看它正在发生的命令。我不清楚如何a)自己构建库和b)破解makefile给我调试符号。有没有人有使用这个特定库的经验,或者对这种构建和修改方法有一般指导?
出现此错误:
./config -d
Operating system: x86_64-whatever-linux2
This system (debug-linux-x86_64) is not supported. See file INSTALL for details.
不知道该怎么做。操作系统信息:
$ cat /proc/version
Linux version 3.2.0-24-virtual (buildd@yellow) (gcc version 4.6.3 (Ubuntu/Linaro 4.6.31ubuntu5) ) #37-Ubuntu SMP Wed Apr 25 10:17:19 UTC 2012
$ uname -srvio
Linux 3.2.0-24-virtual #37-Ubuntu SMP Wed Apr 25 10:17:19 UTC 2012 x86_64 GNU/Linux
答案 0 :(得分:5)
您可以按照here提到的简单说明来构建OpenSSL。要进行调试构建,请在运行-d
时添加./config
标记,即./config -d [other options]
。详细提到了构建OpenSSL here。
答案 1 :(得分:4)
在新版本的OpenSSL上,看起来传递给./Configure的标志在编译时直接注入gcc行。我刚刚做了./Configure -g linux-x86_64
并在我的构建中成功获得了调试符号。
答案 2 :(得分:2)
运行常规配置步骤后,从shell执行以下操作:
$ find . -name Makefile | xargs sed -i -e 's#-O3#-g#g'
它修改生成的makefile;而不是优化选项-O3
,它放在-g
选项中(生成调试符号)。