(1)printf和串列埠,在有終端的情況下使用printf列印除錯;
(2)led,在硬體上使用led作為程式的除錯,檢視程式的運**況;
獲取有關檔案系統支援,可用記憶體,cpu,執行程式的核心狀態等資訊 例如:查詢 /proc 檔案系統。
(1)/proc/cmdline -> 核心命令列
(2)/proc/cpuinfo -> 關於處理器的品牌,型號資訊等
(3)/proc/filesystems -> 檔案系統的核心支援的資訊
(4)/proc//cmdline -> 命令列引數傳遞到當前程序
(5)/proc//mem -> 當前程序持有的記憶體
(6)/proc//status -> 當前程序的狀態
strace的和ltrace是兩個在linux中用來追蹤程式的執行細節的跟蹤工具。
1.strace:系統呼叫
用來監控使用者空間程序和核心的互動,比如攔截和記錄系統呼叫 、訊號傳遞、程序狀態變更等。
它顯示了系統呼叫、傳遞給它們的引數和返回值。當發現程序或服務異常時,我們可以通過strace來跟蹤其系統呼叫,「看看它在幹啥」,進而找到異常的原因 (更多的是用在運維的問題診斷)
工具的好處是不需要源**,程式也不需要重新編譯。
2.ltrace:程序呼叫庫函式的情況
首先ltrace開啟elf檔案,對其進行分析。在elf檔案中,出於動態連線的需要,需要在elf檔案中儲存函式的符號,供聯結器使用。 這樣一來ltrace就能夠獲得該檔案中所有函式呼叫的符號,以及對應的執行指令。然後ltrace將該指令所對應的4個位元組替換成斷點。 這樣在程序執行到相應的庫函式後,就可以通知到了ltrace,ltrace將對應的庫函式列印出來之後,繼續執行子程序。
常用指令:'-i' 選項在呼叫庫時列印指令指標; '-s' 選項被用來現實系統呼叫和庫呼叫。
實際上ltrace與strace使用的技術大體相同,但ltrace在對支援fork和clone方面,不如strace;strace在收到frok和clone等系統呼叫後,做了相應的處理,而ltrace沒有。
多用於檢測記憶體洩漏、重釋放、訪問越界、使用未初始化的記憶體、記憶體讀寫越界(訪問了不該訪問或者沒有許可權訪問的位址空間,動態記憶體訪問時超出了申請的大小範圍)、記憶體覆蓋、使用已經釋放了的記憶體等。
但是它增加了記憶體占用,會減慢程式。有時會造成誤報和漏報。不能檢測出靜態分配的陣列的訪問越界問題。
常見的命令:valgrind --tool=memcheck --leak-check=full ./test
給使用者以控制權而去執行各種動作,例如:啟動程式、停止在規定的位置、在指定條件下停止、檢查所需要的資訊、改變程式中的資料等。
1.原理:
2.安裝步驟:
(1)pc機安裝gdb的步驟:
(2)編譯gbd和gdbserver
(4)以下的所有目錄在你解壓之後開啟的gdb原始碼目錄中完成
tar xjf gdb...
gdb-7.4/
./configure --target=arm-linux
make
mkdir tmp
make install prefix=$pwd/tmp
cp /tmp/bin/arm-linux-gdb /bin
(5)把arm-linux-gdb複製到/bin目錄。
3.開發板安裝的步驟:(將編譯好的工具放在nfs的掛載目錄下,然後開發板就可以使用)
cd ./gdb/gdbserver
./configure --host=arm-linux
cp gdbserver /home/zdh128/nfs_dir/rootfs_aston
將拷過來的gdbserver檔案放在開發板的/usr/bin 目錄下 (庫檔案放在bin目錄下)。
4.除錯:
arm-linux-gcc -g -o test_debug test_debug.c
cp test_debug /home/zdh128/nfs_dir/rootfs_aston/
(1)在arm板上:gdbserver 192.168.1.129:2345 ./test_debug
(2)在pc上:/bin/arm-linux-gdb ./test_debug
輸入: target remote 192.168.1.129:2345
然後:使用gdb命令來控制程式
輸入l:檢視原始碼
輸入break 打斷點 break main 在main裡面打斷點
輸入c:continue
break test_debug.c:31 在31行打斷點
(3)通過core dump檔案直接分析錯誤,進行除錯:讓程式在開發板上直接執行當他發生錯誤時,令它產生core dump檔案然後使用gdb來根據core dump檔案找到發生錯誤的地方。
①ulimit -c unlimited 不限制產生core dump檔案的大小
②執行應用程式,錯誤發生時在當前目錄下產生了名為core 的core dump檔案。
在pc上: cp /work/nfs_root/../core . /bin/arm-linux-gdb ./test_debug ./core
Pycharm的常見Debug除錯方法(持續更新)
一 常規步驟 1.操作步驟 1 1.新增斷點 直接在標記處點選滑鼠左鍵即可。刪除斷點只需再點選斷點處即可 1 2.debug下執行 七星瓢蟲 1 3.按照所需除錯進行 除錯。分別為 1.show execution point f10 顯示當前所有斷點 2.step over f8 單步除錯。若函式...
ssh登入的除錯方法和常見問題
ssh登入伺服器是程式猿日常生活必不可少的一部分,也時不時的會遇到自己配置ssh登入的問題,拿日常使用的git來講,不管使用github也好,還是自己搭建的gitlab等等,如果不能很好的理解ssh的原理,極容易遇到各種問題。這篇文章就嘗試向大家簡單講解下ssh的原理 除錯方式和常見問題。這裡要講的...
xslt 語法簡單應用及除錯方法
公司用到應用整合平台,有webservice介面卡,用起來還算方便,其中會接觸到xslt的語法 維基百科的解釋 就是根據模板將xml 報文轉換成mml串 a 1,b 2,c 3 語法到也算簡單,不過開始除錯的時候很費力,後來發現 xmlspy工具非常好用,下面就介紹下使用方法。2.選擇轉換,或者按f...