首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >nm与gdb突破

nm与gdb突破
EN

Stack Overflow用户
提问于 2015-05-29 16:43:53
回答 1查看 267关注 0票数 0

我正在Ubuntu14.04LTS上工作。

我有一个从exec编译的可执行文件file.cfile.c使用静态库中的函数。例如,让我们假设fubar()file.c中使用的静态库的一个函数。这是我注意到的。

  • nm exec | grep fubar给出了一定的值。 (在我的系统和我的可执行文件0808377f上)
  • gdb ./execbreak fubar给出了不同的值。 (在我的系统和我的可执行文件0x8083785上)

当我对另一个可执行文件(从exec1编译而来的file1.c )做类似的事情时,它会为这两个命令输出相同的值。

这两个命令都应该输出相同的虚拟地址。不是吗?很明显我漏掉了什么。有人能解释一下到底发生了什么吗?这两个命令之间的区别是什么。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-29 18:31:42

除了-fPIE这样不寻常的东西之外,这里要做的是gdb命令break function实际上意味着“function函数序言之后的中断”。这样,在命中断点时,就可以正确地设置参数。

如果要在函数的第一条指令处完全中断,请使用*语法,如下所示:

代码语言:javascript
复制
(gdb) break *function

如果您这样做,地址可能会匹配。

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

https://stackoverflow.com/questions/30534879

复制
相关文章

相似问题

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