2012-05-04 18 views

Trả lời

13

tôi đã cố gắng (trong Bash):

while true ; do gdb -ex run a.out -ex quit ; done ; 

Thật không may, điều này hóa ra là khá khó khăn để giết chết, nhưng nó đã tự động chạy, và khi chương trình bị rơi (Tôi đã thử nghiệm với một chương trình cũ gây ra một SIGABRT), gdb hỏi "Chương trình đang chạy. Thoát không? (Y hoặc n)", vì vậy chỉ cần nhấn n.

+0

Chỉ cần cố gắng này. Để giết nó chỉ cần nhấn 'ctrl-Z' và sau đó' kill% [job number] '. Bạn có thể sử dụng 'jobs' để kiểm tra số công việc. –

+0

trong khi đúng; làm gdb -ex chạy a.out -ex quit; ngủ 0,2; làm xong ; –

2

Sử dụng một kịch bản shell để chạy gdb repedatedly, và sử dụng các tùy chọn để --batch -x <cmdfile>gdb để xác định một tập lệnh mà chỉ đơn giản có chữ run để chạy chương trình. Vì vậy, một cái gì đó như thế này:

$ echo run > cmdfile ; while gdb --batch -x cmdfile myprogram ; do : ; done 
6

Tôi đã gặp phải vấn đề tương tự, và nảy ra những gì tôi nghĩ là một cách khá tốt để dừng vòng lặp vô hạn mà BoBTFish đề xuất.

Thay vì lặp while true, bạn có thể sử dụng sự tồn tại của một tập tin dummy để kiểm soát vòng lặp, ví dụ:

touch loopfile; while [ -f loopfile ] ; do gdb -ex run a.out -ex quit ; done ; 

Khi bạn muốn dừng phiên gỡ lỗi vô hạn của bạn, bạn có thể mở một nhà ga mới ở cùng thư mục và rm loopfile, hoặc bạn có thể thoát ra từ nhà ga cùng bằng cách ngăn chặn với control-c và sau đó xóa loopfile từ bên trong gdb:

^CQuit 
A debugging session is active. 

    Inferior 1 [process 11136] will be killed. 

Quit anyway? (y or n) n 
Not confirmed. 
(gdb) shell rm loopfile 
(gdb) quit 
A debugging session is active. 

    Inferior 1 [process 11136] will be killed. 

Quit anyway? (y or n) y 

Hopef ully điều này rất hữu ích cho một người nào đó trong tương lai, nó có vẻ giống như một cách tốt đẹp (nếu hackish) cách gỡ lỗi các vấn đề liên tục.

0

Vòng + LD đường + lệnh args dòng ví dụ

for i in {0..99}; do LD_LIBRARY_PATH=/some/path/to/libs gdb -ex 'set args arg1 arg2 arg3' -ex run ./execName -ex quit ; done 
Các vấn đề liên quan