使用gdb时,如何区分具有相同名称的函数?

时间:2014-12-18 06:23:42

标签: c debugging gdb

我正在调试使用C的{​​{1}}程序。该程序调用{​​{1}}函数。在运行期间,程序将使用unixODBC打开数据库SQLPrepare驱动程序库,该驱动程序库还具有名为dl_open的函数。我如何区别他们?

例如,如果我想反汇编ODBC,它实际上会反汇编程序直接使用的函数:

SQLPrepare

我尝试使用&#34; SQLPrepare&#34;命令反汇编数据库(gdb) disassemble SQLPrepare Dump of assembler code for function SQLPrepare: 0x00007ffff7d7dbab <+0>: push %rbp 0x00007ffff7d7dbac <+1>: mov %rsp,%rbp 0x00007ffff7d7dbaf <+4>: push %rbx 驱动程序库中的函数,但它无法工作:

disassemble libverticaodbc.so:SQLPrepare

我怎么能歧视他们?提前谢谢!

1 个答案:

答案 0 :(得分:1)

  

我怎么能歧视他们?

如果两个函数都没有调试信息,则区分应该很容易:

(gdb) info function SQLPrepare
... two separate addresses should be listed
(gdb) disas <addr1>
(gdb) disas <addr2>

如果其中一个或两个函数都有调试信息,则可能会遇到this GDB错误。