Я пытаюсь проверить функциональность функций в общей библиотеке объектов. В программах с функцией main
я просто start
, программа и GDB автоматически установили бы точку останова на главной, но это, очевидно, здесь не доступно.
Допустим, у меня есть add.c
:
long add(long x, long y) {
return x + y;
}
Я компилирую это с gcc -shared -o libadd.so -fPIC add.c
и загружаю в GDB:
(gdb) file libadd.so
Reading symbols from libadd.so...(no debugging symbols found)...done.
(gdb) start
Function "main" not defined.
Make breakpoint pending on future shared library load? (y or [n])
Starting program: /tmp/minimal/libadd.so
Program received signal SIGSEGV, Segmentation fault.
0x0000000000000001 in ?? ()
Предпочтительно, я хотел бы иметь возможность использовать GDB, как показано ниже:
(gdb) file libadd.so
Reading symbols from libadd.so...(no debugging symbols found)...done.
(gdb) call (long)add(5,6)
$1 = 11
Но этот вызов приводит к You can't do that without a process to debug
.
Могу ли я отлаживать подобные библиотеки в GDB?