Perintah sharedlibrary

Membuat GDB memuat simbol-simbol debugging untuk perpustakaan bersama yang spesifik atau semua perpustakaan bersama yang dimuat.

Sintaks

sharedlibrary
sharedlibrary [Nama Perpustakaan]
sharedlibrary [Ekspresi Reguler]
share [...]

Parameter

Nama Perpustakaan
Menentukan perpustakaan untuk dimuat simbol debuggingnya.
Ekspresi Reguler
Jika ditentukan, GDB akan memuat simbol untuk semua perpustakaan yang saat ini dimuat yang cocok dengan ekspresi yang ditentukan.

Catatan

Secara normal, GDB akan memuat simbol-simbol perpustakaan bersama secara otomatis. Anda dapat mengontrol perilaku ini menggunakan perintah set auto-solib-add. Namun, dalam beberapa kasus (misalnya saat debugging dengan gdbserver dan simbol-simbol tidak cocok atau menggunakan toolchain Android yang lama), GDB tidak akan memuat simbol-simbol tersebut secara otomatis. Dalam kasus ini, Anda dapat menggunakan perintah info sharedlibrary untuk daftar perpustakaan bersama yang dimuat dan perintah sharedlibrary untuk memaksa simbol-simbolnya dimuat.

Jika GDB tidak memuat simbol debugging secara otomatis untuk perpustakaan Anda saat debugging dengan gdbserver, periksa jalur pencarian menggunakan perintah set solib-search-path.

Contoh

Pada contoh ini, kita akan menonaktifkan pengisian otomatis perpustakaan bersama menggunakan perintah set auto-solib-add off, kemudian menjalankan aplikasi, mencantumkan file sumber, dan memuat simbol secara manual:

(gdb) set auto-solib-add off     
(gdb) break main     
Breakpoint 1 at 0x80484ed: file main.cpp, line 7.     
(gdb) run     
Starting program: /home/testuser/libtest/testApp      
     
Breakpoint 1, main () at main.cpp:7     
7     printf("In main()\n");     
(gdb) info sources     
Source files for which symbols have been read in:     
     
/home/testuser/libtest/main.cpp     
     
Source files for which symbols will be read in on demand:     
     
     
(gdb) info sharedlibrary      
From        To          Syms Read   Shared Object Library     
0xb7fde820  0xb7ff6b9f  No          /lib/ld-linux.so.2     
0xb7fd83a0  0xb7fd84c8  No          /home/testuser/libtest/libTest.so     
0xb7e30f10  0xb7f655cc  No          /lib/i386-linux-gnu/libc.so.6     
(gdb) sharedlibrary libTest     
Reading symbols from /home/testuser/libtest/libTest.so...done.     
Loaded symbols for /home/testuser/libtest/libTest.so     
(gdb) info sources     
Source files for which symbols have been read in:     
     
/home/testuser/libtest/main.cpp     
     
Source files for which symbols will be read in on demand:     
     
/home/testuser/libtest/lib.cpp     
(gdb) break lib.cpp:5     
Breakpoint 2 at 0xb7fd846e: file lib.cpp, line 5.     
(gdb) continue     
Continuing.     
In main()     
     
Breakpoint 2, func () at lib.cpp:5     
5     printf("In func()\n");