GDB 无法插入内部断点
GDB can't insert internal breakpoint
我在一个共享库(.so)的函数中添加了两个断点,并运行gdb 7.4
并将其附加到进程。
Gdb遇到断点,我运行n
几个步骤,Gdb报告了以下错误(带有bold文本):
(gdb)b[函数名称]
0xf1f28a49处的断点1:文件../../..//[文件名].cpp,第167行。
0xf1f2dae5处的断点2:文件../../..//[文件名].cpp,第60行。
警告:设置了多个断点
使用"delete"命令删除不需要的断点
(gdb)c
继续
[新线程0xcaafab90(LWP 28480)]
[线程0xcaafab90(LWP 28480)已退出]
[新线程0xcaafab90(LWP 29558)]
[新线程0xc8cb6b90(LWP 29980)]
[切换到线程0xc8cb6b90(LWP 29980)]
断点2,[函数名称](ostr=…,clientResponse=…,httpProtocol=…,>reqType=…),位于../../..//[文件名].cpp:60
60.../../../..//[文件名].cpp:没有这样的文件或目录
在../../../..//[文件名].cpp
(gdb)ni
0xf1f2daed 60英寸../../..//[文件名].cpp
(gdb)n
断点1,[函数名称](ostr=…,clientResponse=…,httpProtocol=…,>closeConn=…,asynchResponse=…,reqType=…)
在../../../..//[文件名].cpp:167
167英寸../../../..//[文件名].cpp
(gdb)n
警告:
无法插入断点0。
访问内存地址0x36cc6ded时出错:输入/输出错误
来自/lib/libc.so.6的siglongjmp()中的0xf7082771
(gdb)
这是/proc/[PID]/maps
:
的输出
0804800-08146000 r-xp 00000000 08:03 293876
08146000-08150000 rw-p 000fe000 08:03 293876
08150000-009c8000 rw-p 08150000 00:00 0
[heap]
c21f9000-c21fa000--p c21f9000 00:00 0
c21fa000 c29fa000 rwxp c21fa00 00:00 0
c29fa000-c29fb000---pc29fa000 00:00 0
……
f1e1b000-f1e24000 rw-p f1e1b000 00:000
f1e24000-f2093000 r-xp 00000000 08:03 295549
.so
f2093000-f2094000--p 0026f000 08:03 295549
.so
f2094000-f2098000 r--p 0026f000 08:03 295549
.so
f2098000-f209c000 rw-p 00273000 08:03 295549
.so
f209c000-f209d000 rw-p f209c000 00:00 0
我的问题是:
-
Gdb无法为
ni
命令插入内部断点,但如果文本部分位于0xf1******
,为什么它要尝试访问地址0x36cc6dde
?如您所见,该地址未包含在地图的输出中。 -
更普遍的问题是,我被告知共享库从
0x40000000
开始,但为什么在我的环境中不是这样?
共享库是用-fPIC
编译的。我在上面的痕迹中隐藏了一些符号名称。
这可能与http://sourceware.org/bugzilla/show_bug.cgi?id=13987.请尝试最新的FSF GDB HEAD(可从以下网站获得:git://sourceware.org/git/gdb.git)。
- 将函数类成员映射到类本身内部
- Boost Spirit,获取迭代器内部语义动作
- 我不明白为什么我声明一个空的内部结构并将其传递给构造函数
- 内联函数中具有内部链接的全局变量
- 在函数内部的声明中初始化数组,并在外部使用它
- 如何在不知道向量大小的情况下输入向量内部的向量?
- 无法删除指针,已触发断点
- 卷曲bracers内部结构的声明
- 从函数角度看ID到文件路径的内部与外部映射
- spdlog标头仅与外部fmt一起使用.spdlog错误:'内部':不是'fmt'
- 如何在pugixml中获取节点的内部XML
- 使用C链接在函数内部创建C++模板
- 条件断点在不应该触发时触发
- 指针没有更新它在void函数内部指向的值
- 方法内部但循环仍得到预期的不合格id错误C++
- C++:具有内部链接的正向声明常量
- SDL_PollEvent() 无法捕获类函数内部SDL_QUIT?
- libcurl 和 DNS ttl 中的内部连接管理
- GDB 无法插入内部断点
- 模板函数内部的断点,Eclipse CDT开普勒