无法在Ubuntu 14.04

时间:2015-11-18 15:59:46

标签: c debugging ubuntu

我尝试在Ubuntu 14.04上调试libc但是无法使用gdb作为库并且源无法正确匹配。

gdb无法正确放置断点。在中,我能够进入一个函数并查看源代码,但断点标记将位于函数内部的某个随机位置,而不是在开头。

当我在next上使用gdb继续声明语句时,标记将继续上下跳转(原因是源文件和调试库不能正确匹配。

根据glibc的{​​{1}}版

ldd

我已使用以下命令下载ldd --version ldd (Ubuntu EGLIBC 2.19-0ubuntu6.6) 2.19 Copyright (C) 2014 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Written by Roland McGrath and Ulrich Drepper. 来源:

libc

以上将创建以下文件:

sudo apt-get source libc6

eglibc-2.19 eglibc_2.19-0ubuntu6.6.debian.tar.xz eglibc_2.19-0ubuntu6.6.dsc eglibc_2.19.orig.tar.xz 我正在做

gdb(nptl因为我正在进入dir <path-to-libc-source>/nptl

我已尝试同时使用pthread_create来源和eglibc-2.19

我也尝试过设置LD_LIBRARY_PATH:eglibc_2.19.orig.tar.xz

但上述情况也没有帮助。

能够成功调试export LD_LIBRARY_PATH=/usr/lib/debug代码的人是否可以分享他/她如何正确执行此操作的技巧?

1 个答案:

答案 0 :(得分:0)

假设源代码版本和库版本相同....

“跳跃”的根本原因是编译器优化通常会改变源文件中顺序的可执行代码的顺序。

当使用任何优化参数编译代码时会发生这种情况。