我正在尝试在服务器上对我怀疑与缓冲区溢出有关的问题进行一些调试,因此我尝试编译我的代码-fsanitize=address
以启用地址清理。
它编译,生成的软件运行。但是,当地址清理器检测到错误时,我正在尝试获取核心转储,因为这几乎是由于设置而从系统中获取信息的唯一方法。
我ASAN_OPTIONS=abort_on_error=1
在命令行上调用该软件(使用 shell 脚本来执行此操作),并检查ulimit -c
了结果为无限制,但它不会产生核心转储。
我错过了什么?
这是在带有 gcc 版本 4.8.4 的 ubuntu 14.04 服务器上
编辑:sysctl kernel.core_pattern
还给kernel.core_pattern = |/usr/share/apport/apport %p %s %c %P
。这可能意味着启用了 apport(至少以某种形式)。但是,我已经能够从软件中的断言和 SIGFPE 中获得该系统上正确的核心文件(怀疑阵列溢出的原因来自于此)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句