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.
Nguồn
2012-08-08 05:18:27
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. –
trong khi đúng; làm gdb -ex chạy a.out -ex quit; ngủ 0,2; làm xong ; –