【发布时间】:2013-08-01 11:39:54
【问题描述】:
我已经在 arm 中反汇编了代码。我想知道这些指令在其原始源文件中对应的行号。
另外,我想了解一些事情。
一个函数,例如 android::CameraHardware::createInstance 在程序集中显示为 _ZN7android18CameraHardware14createInstanceEib 。我什至不完全确定这是否是我应该与之比较的正确功能。
为什么名字这么奇怪,前后都加东西?我通常对 C 代码做同样的事情。反汇编代码中的函数名称看起来很直观。
所以总结一下,我有两个问题。
-
在 GDB 内部,有没有办法我可以得到一个行号 汇编指令的特定行?
例如在 0x40d9078c,我想知道它是哪一行 对应于它的源文件。我试过信息线。没用。任何 其他建议?
当我们在理解cpp代码的反汇编时,如何 了解命名约定?还有我们需要做的其他事情 理解为先决条件?
谢谢。
【问题讨论】:
-
提示:如果你错过了直接的名字,请查看
extern "C" -
1) 学习 C++ 名称修饰。 2) 学习一种调试符号语言(如 DWARF)。
-
不知道
gdb,但您可以使用objdump和-SCld选项来获得与原始源代码和行号混合的反汇编,并带有去错的名称。 -
@Michael 非常感谢。现在对我来说有点清楚了。但是我看不到源。但我可以看到名字被破坏了
-
除非您使用调试信息进行编译,否则您将看不到源代码。请参阅 Mats Petersson 的回答。