2013-10-13 63 views
1

我正在和一名盲學生一起工作。她可以從命令行運行gdb來調試基於窗口的程序,但是程序需要從gdb獲取焦點,所以如果命中斷點或程序崩潰,屏幕閱讀器不會讀取gdb結果。理想情況下,它會希望焦點在終端獲取gdb輸出時發送到終端,否則,當gdb遇到斷點或程序崩潰時,是否有辦法運行linux命令?然後我可以運行「espeak gdb」,她會知道gdb需要重點關注。獲取gdb在發生中斷或發生崩潰時運行命令

似乎應該有一種簡單的方法來使用.gdbinit中的腳本執行此操作。

後來編輯:

我弄清楚,你可以把這個代碼到.gdbinit:

python 
import os 
def stop_handler (event): 
os.system("espeak gdb") 

gdb.events.stop.connect (stop_handler) 

回答

3

您可以安裝stop hookhook-stop和使用shell後跟一個命令,使其得到執行時的過調試程序停止,例如運行cmd(Windows),以便在停止時從外殼回顯一些字符串:

define hook-stop 
    shell cmd /c echo "hello" 
end 

替換cmd /c echo "hello"你想要的命令,並把它複製和過去,它在調試器,現在,當我的程序擊碎:

#include <stdio.h> 

int main(int argc, char **argv) { 
    int *p = NULL; 

    printf("%d\n", *p); 

    return 0; 
} 

我應該能看到「你好」:

> gdb -q a.exe 
Reading symbols from a.exe...done. 
(gdb) define hook-stop 
Type commands for definition of "hook-stop". 
End with a line saying just "end". 
> shell cmd /c echo "hello" 
>end 
(gdb) run 
Starting program: a.exe 
[New Thread 420.0x430] 

Program received signal SIGSEGV, Segmentation fault. 
"hello" 
0x004013a6 in main() 
(gdb)