2012-03-14 70 views
2

在命令行中使用GDB時,我有時會在特定的代碼行中斷開。在那個斷點處,我可以調用函數,好像我的可執行程序包含該調用的從GDB列出可調用的函數

我該如何讓GDB打印在給定斷點處可調用的所有可能函數的列表?

回答

3

您可以鍵入call然後打<tab>(直到列表顯示)。這似乎列出了二進制文件中包含的功能。

+0

謝謝。標籤似乎不適用於我。 (我使用Cygwin。) – Randomblue 2012-03-14 15:28:33

+0

可能有一些配置可以對Cygwin進行啓用。 [此頁面](http://sourcery.dyndns.org/wiki.cgi?CygwinTips)(ctrl + f tab完成)說明了如何在.inputrc文件中添加'\ t「:menu-complete'。 – douggard 2012-03-14 23:01:41

1

可調用函數的整個列表可能相當大。例如它包含了所有的libc函數。相反,您可以開始輸入函數名稱並按Tab鍵以獲得較短的列表。另請注意,全局變量和文件名也將與函數一起列出。

(gdb) call 'open 
open    open_memstream openat.c   opendir.c 
open64   open_path   openat64   [email protected] 
open64.c   open_socket  openat64.c  openlog 
[email protected]  open_translit  openaux   openlog_internal 
open64_2.c  open_verify  openaux_args  opensock.c 
open_2.c   open_wmemstream openchild.c  
open_catalog.c openat   opendir   
+0

由於某種原因選項卡不適用於我的Cygwin .... – Randomblue 2012-03-14 15:28:15