arm汇编代码-理解cpp源代码的反汇编



我已经在arm中分解了代码。我想知道这些指令在其原始源文件中的对应行号。

此外,我想了解一些事情。

例如CCD_ 1的函数在组装中显示为CCD_。我甚至不完全确定这是否是我应该将其与之进行比较的正确函数。

为什么名字这么奇怪,东西前后都加了?我通常对C代码也这样做。在反汇编的代码中,函数名称看起来很直接。

总之,我有两个问题。

  • 在GDB内部,有没有一种方法可以获得装配指令的特定行?

    例如,在0x40d9078c,我想知道它是哪一行对应于其源文件中的。我试过信息线。没用。任何其他建议?

  • 当我们了解cpp代码的反汇编时,如何了解命名约定吗?还有我们需要做的其他事情理解为先决条件?

谢谢。

android::CameraHardware::createInstance_ZN7android18CameraHardware14createInstanceEib的转换称为"名称篡改",对于C++来说是正常的。这就是如何让多个函数具有相同的名称,使用不同的参数,并让链接器告诉你"我找不到foo(int x, double y)",而你只声明了它,但没有定义它。

在Linux中,您可以使用c++filt将损坏的名称翻译为未损坏的形式(假设它是按照Linux风格的损坏约定编译的——android就是这样做的——但如果您使用Microsoft编译的代码,它显然不起作用)。

如果使用调试符号进行编译,gdb应该能够向您显示给定代码段的源代码。在编译中将-g添加到g++行。

最新更新