linux gdb執行不下去的程式除錯方法
daemon程式一般都要停止父程序,重新設定會話,這樣的程式gdb到這裡就會結束,無法跟蹤到下一步。
要除錯這樣的程式有幾種方法:
1、這些程式一般都是有while迴圈或者等待阻塞(例如伺服器程式),這樣的話,一般的可以讓程式先執行起來,然後用gdb除錯子程式;
2、考慮另一種情況,如果在makeDaemon成功之後到while迴圈之前的程式碼出問題了,程式直接退出了,怎麼除錯?
日誌是一種方法,但是效率稍低。
其實也可以用gdb,但是先讓程式停在makeDaemon成功之後。
在這之後呼叫如下程式碼,就可以讓程式停下來:
kill(getpid(),SIGSTOP);
gdb除錯:
# gdb test `pid test` -d testdir
進去後繼續除錯方法:
A、打斷點,呼叫kill命令:kill -s CONT pid
B、gdb視窗輸入n,回車,連續三次,自動執行到kill程式碼的下一行。
繼續。。。
相關推薦
linux gdb執行不下去的程式除錯方法
daemon程式一般都要停止父程序,重新設定會話,這樣的程式gdb到這裡就會結束,無法跟蹤到下一步。 要除錯這樣的程式有幾種方法: 1、這些程式一般都是有while迴圈或者等待阻塞(例如伺服器程式),這樣的話,一般的可以讓程式先執行起來,然後用gdb除錯子程式; 2、考慮另
linux下的程式除錯方法彙總
搞電子都知道,電路不是焊接出來的,是調試出來的。程式設計師也一定認同,程式不是寫出來的,是調試出來的。那麼除錯工具就顯得尤為重要,linux作為筆者重要的開發平臺,在linux中討論除錯工具主要是為那些入門者提供一些幫助。除錯工具能讓我們能夠監測
linux驅動程式除錯方法
來自:https://blog.csdn.net/caijp1090/article/details/7471862https://blog.csdn.net/gatieme/article/details/68948080驅動程式開發的一個重大難點就是不易除錯。本文目的就是
64位linux上支援執行32位程式的方法
在64位的Linux上執行32位程式的時候會出現這種情況: (1)執行bin檔案時提示:No such file or directory (2)ldd bin檔案 的輸出為: not a dynamic executable (3)file bi
【Linux】shell呼叫Java程式main方法通過crontab定時執行
最近一個專案需要寫一個batch定時讀取檔案往資料庫裡插入記錄,第一次寫,遇到好多問題,記錄一下。 先從shell如何呼叫java說起 建立如下目錄結構 batch 根目錄 ├── bin
【轉載】使用訊息號除錯SAP標準程式 (作為SAP顧問都應該知道的ABAP程式除錯方法)
摘要:雖然SAP系統的穩定性很不錯,大部分問題不需要通過除錯程式碼來解決。但是,別忘記我們還有很多自開發程式,或者某些配置不完整等,某些情況下通過除錯ABAP程式是一個能快速找到問題根源的方法。本篇主要針對業務模組顧問來講解一種通過訊息號及簡單的程式除錯來定位系統報錯的原因及解決的方法。 正文:
如何安裝和使用Wine,以便在Linux上執行Windows應用程式
如何安裝和使用Wine,以便在Linux上執行Windows應用程式 我來答 分享 舉報 瀏覽 2150 次 1個回答 #不想上班# 今天上班,你最想說點啥? 最佳答案 cincoutvc 來自電腦網路類芝麻團 2017-10-19 在Linux上執行Windows程式需要安裝Wine,
WinCE程式除錯方法【轉】
剛剛接觸WinCE程式設計,感覺大部分跟WinForm一樣。剛開始的時候,不知道怎麼進行斷點除錯,後來同事告訴我,可以直接連線進行斷點除錯,一試之下,果然好用,所以拿出來分享一下。必備工具:Microsoft ActiveSync,該工具主要用於WinCE裝置和Windows Mobile系統的手機跟PC進行
C++和QML混合的QT程式除錯方法
以前除錯只是QML或者只是C++的QT程式很簡單,斷點打上,直接debug按鈕一點,喝一口水,自然就停在斷點了。 這次遇到C++和QML混合的程式,把 CONFIG+=declarative_debug CONFIG+=qml_debug
一種嵌入式linux本地和遠端升級程式的方法
嵌入式linux裝置要進行軟體升級有很種多方式方法,總的來說可以分為本地升級和遠端升級。本地升級包括升級工具升級,儲存介質升級等,遠端升級是指通過網路進行程序升級。這裡介紹一種同時至此本地和遠端升級的方法,以供參考。 本地升級: (1)升級工具升級
Linux顯示執行指令碼程序號的方法
一般來說,我們可以使用pidof來顯示執行程序的程序號,但是,如果是想獲取執行指令碼的程序號的話,用pidof是獲取不到的。以sh執行指令碼test.sh為例,test.sh指令碼如下: while true do sleep 1 done 執行如下命令sh
在Linux 中安裝不了程式?教你一招解決!
CrossOver Linux 一款可以幫助我們在Linux作業系統中 執行Windows應用程式的軟體 不必購買 Windows 授權! 不必重啟系統! 不必使用虛擬機器! 如果安裝程式檔案在下載期間損壞 (可能由於網路錯誤,下載伺服器問題或計算機上的防病毒軟體而發生) 則Cros
mysql 安裝失敗 start service執行不下去
簡單說一下自己安裝mysql的經歷坑點,新手應該都會遇到。新買了一個電腦,第一次安裝的情況:在網上下載好幾個不同的mysql,安裝都在最後一步執行的時候,執行不下去,最後開啟客戶端,就是閃一下就消失了,始終沒有解決,最後在公司經理考了一個回來,安裝竟然成功了,我也沒有刪除什麼登錄檔什麼的。第二次安裝
VS2015中帶引數的控制檯程式除錯方法
在VS2015中編寫控制檯程式時,有時要求控制檯程式帶有引數,即argv引數。 1 argv與argc argv引數是argument vector的簡寫,表示main()函式的引數向量。argv[0]是控制檯程式的絕對路徑。argc是argument count的簡寫,
你的計劃為什麼執行不下去?怎麼破?
2015年12月17日,我做了一次題為“做自己想做的工作”的公開課,有個朋友提了個問題,大意是說他想學程式設計,覺得自己也喜歡,準備學,可是每次有時間,他寧願背會兒單詞,也懶得開始學程式設計。 有個朋友決心要減肥,每天吃很少,晚上甚至斷食,堅持了兩個星期就
Linux 連續執行多條命令的方法
多個命令可以放在一行上,其執行情況得依賴於用在命令之間的分隔符。如果每個命令被一個分號 (;) 所分隔,那麼命令會連續的執行下去,如: 引用 [email protected]:/proc> printf "%s/n" "This is executed
linux下執行eclipse出錯的解決方法
我在vmware虛擬機器上安裝了linux系統,併成功地安裝了jdk 現在可以執行自己編寫的JAVA程式。 但是解壓eclipse- jee-galileo-SR2-linux-gtk.tar檔案之後執行eclipse卻總是失敗 它提示說JRE JDK沒有安裝好,總之
linux裝置驅動學習筆記--核心除錯方法之printk
1,printk類似於使用者態的printf函式,但是比printf函式多了一個日誌級別,核心中最常見的日誌輸出都是通過呼叫printk來實現的,其列印級別有8種可能的記錄字串, 在標頭檔案 <linux/kernel.h> 裡定義: KERN_EMERG
SmartUpload upload()執行不動的解決方法
SmartUpload 上傳元件在執行upload()方法時執行不動,以前遇到過幾次,都解決了,但今天遇到又想不起來怎麼解決了,在郭工的英明提示下今天解決了,一定得記錄一下,哈哈 我的專案用的struts2,配置檔案配置的是struts對/*進行了處理,導致對SmartUpload也進行了處理,所以uplo
linux裝置驅動學習筆記--核心除錯方法之proc(補充seq_file)
上一節中的proc實現對於開關檔案,控制檔案,以及顯示很少資訊的檔案來說還是比較簡單的,但是對於需要輸出大量資訊像meminfo,或者結構化的資訊像cpuinfo等時就會顯得很笨拙,並且程式碼也很不好理解與維護。核心為了簡化這種proc檔案的實現提供了另外一種方案----s