首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在Ubuntu 14.04上调试libc源代码

无法在Ubuntu 14.04上调试libc源代码
EN

Stack Overflow用户
提问于 2015-11-18 23:59:46
回答 1查看 384关注 0票数 2

我正在尝试在Ubuntu14.04上调试libc,但是无法使用gdb来调试,因为库和源代码不匹配。

gdb无法正确放置断点。就像在中一样,我可以单步执行一个函数并查看源代码,但断点标记将位于函数内部的某个随机位置,而不是在开始处。

当我在gdb上使用next逐句执行语句时,标记会一直上下跳跃(原因是源文件和调试库不正确匹配。

根据ldd,我的glibc版本是

代码语言:javascript
复制
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

上面的代码将创建以下文件:

代码语言:javascript
复制
eglibc-2.19  
eglibc_2.19-0ubuntu6.6.debian.tar.xz  
eglibc_2.19-0ubuntu6.6.dsc  
eglibc_2.19.orig.tar.xz

gdb中,我正在做

dir <path-to-libc-source>/nptl (nptl,因为我正在步入pthread_create)

我既尝试使用eglibc_2.19.orig.tar.xz,也尝试使用eglibc-2.19源代码。

我还尝试设置了LD_LIBRARY_PATH:export LD_LIBRARY_PATH=/usr/lib/debug

但以上也无济于事。

能够成功调试libc代码的人可以分享他/她的技术如何正确地进行调试吗?

EN

回答 1

Stack Overflow用户

发布于 2015-11-19 01:38:58

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

“跳转”的根本原因是编译器优化经常改变可执行代码的顺序,而不是源文件中的顺序。

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33784699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档