Я отлаживаю программу C
, которая использует unixODBC
. Программа вызывает функцию SQLPrepare
. Во время работы программа будет использовать dl_open
, чтобы открыть базу данных библиотеки ODBC
, которая также имеет функцию под названием SQLPrepare
. Как я их дискриминирую?Как я могу различать функции, имеющие одно и то же имя при использовании gdb?
Например, если я хочу разобрать 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.
Как я могу их различить? Заранее спасибо!