gdb + gdbserver調試時,無法使用Ctrl+C暫停調試的問題

使用gdbserver進行遠程調試,跟蹤調試板子上的程序時,發現target remote後,想下幾個斷點,發現ctrl+c無法暫停程序,因此斷點也下不了了。只能在連接前,提前下好斷點,這明顯是噁心的,因爲分析問題過程中有隨機下斷點的需求。但是我記得之前這個程序,在同樣的硬件上是可以後期下斷點的。google發現有人說是gdbserver bug,其中提到了一個patch https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;a=commit;h=78708b7c8ccc2138880217de9bd60eceff683f10. 但是我查看SDK裏面gdb的源碼,發現是打過這個bug後的樣子。另一個地方 https://bugzilla.kernel.org/show_bug.cgi?id=9039 提到 https://github.com/fairyfar/gdb_sigwait 如果應用程序捕獲了一些信號,例如SIGINT,會導致gdb的Ctrl+C動作不起作用,Ctrl+C正是發送SIGINT信號的。於是查看我的應用代碼,發現我後來確實添加SIGINT的信號處理函數,註釋之,問題解決。也可以按照 https://github.com/fairyfar/gdb_sigwait 這裏的方式處理。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章