gpt4 book ai didi

c - 使用gdb时如何区分同名函数?

转载 作者:行者123 更新时间:2023-11-30 15:26:02 24 4
gpt4 key购买 nike

我正在调试一个使用 unixODBCC 程序。程序调用SQLPrepare函数。在运行过程中,程序会使用dl_open来打开数据库ODBC驱动库,其中还有一个名为SQLPrepare的函数。我该如何区分他们?

例如,如果我要反汇编SQLPrepare,它实际上是反汇编程序直接使用的函数:

(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”命令反汇编数据库ODBC驱动库中的函数,但无法工作:

(gdb) disassemble libverticaodbc.so:SQLPrepare
No symbol "libverticaodbc" in current context.

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

最佳答案

How could i discriminate them?

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

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

如果一个或两个函数确实有调试信息,您可能会遇到 this GDB 错误。

关于c - 使用gdb时如何区分同名函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27540388/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com