gdb調試之linux pc和linux arm環境下

来源:http://www.cnblogs.com/yinkui-linux-develop/archive/2017/09/01/7464100.html
-Advertisement-
Play Games

Linux PC應用程式gdb調試: 1、查看core文件參數 yinkui@yinkui-desktop:~/File_unzip/cp_module$ ulimit -a core file size (blocks, -c) 0 //產生core文件數目,不會產生core文件 data seg ...


Linux PC應用程式gdb調試:

1、查看core文件參數
yinkui@yinkui-desktop:~/File_unzip/cp_module$ ulimit -a

core file size          (blocks, -c) 0        //產生core文件數目,不會產生core文件

data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 31042
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192        //應用程式棧大小
cpu time               (seconds, -t) unlimited
max user processes              (-u) 31042
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited


2、設置產生core文件大小
ulimit -c unlimited(不限制core文件的大小)
(預設不會現實PID信息,可通過以下命令修改此文件:  echo "1" > /proc/sys/kernel/core_uses_pid , 這樣每次程式掛了之後會生成類似 core.8909(8909是當時的進程號), 效果就是後續生成的core文件不會覆蓋之前生成的core文件。)
3、產生段錯誤之後,查看進程信息
gcc -g test.c -o test (設置gdb調試)
ls -l core.*
4、使用gdb調試core文件之前操作 查看core文件信息:file core
5、使用gdb調試core文件 gdb --core=core.PID

(gdb)bt(第一次不會出現堆棧信息)

(gdb)file ./a.out(運行程式)
(gdb)bt(backtrace信息出現)
(可直接使用命令:ulimit -a; ulimit -c unlimited;ulimit -a;echo "1" > /proc/sys/kernel/core_uses_pid)
Linux arm應用程式arm-XXXX-gdb調試:

1、查看core文件參數
yinkui@yinkui-desktop:~/File_unzip/cp_module$ ulimit -a

core file size          (blocks, -c) 0        //產生core文件數目,不會產生core文件

data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 31042
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 31042
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited


2、設置產生core文件大小
ulimit -c unlimited(不限制core文件的大小)
(預設不會現實PID信息,可通過以下命令修改此文件:  echo "1" > /proc/sys/kernel/core_uses_pid , 這樣每次程式掛了之後會生成類似 core.8909(8909是當時的進程號), 效果就是後續生成的core文件不會覆蓋之前生成的core文件。)
3、編譯程式選項
加入gdb可調試選項 arm-linux-XXX -g test.c -o test

4、構建GDB+GDB server nfs調試方法
(1)確保arm開發板與主機支持nfs功能,設置開發板和主機在同一網段,並設置共用目錄(如/mnt/nfs)。 (2)將編譯器對應該的gdbserver和test(可執行文件)拷貝到共用目錄(/mnt/nfs),修改應用程式和 gdbserver許可權為777.
(3)通過telnet或者minicom登陸到開發板,掛在nfs文件系統:mount -t nfs 主機IP:/mnt/nfs(共用目錄) /home/root/modbus_rtu_slave(開發板目錄) -o nolock
(4)進入共用目錄 運行gdbserver建立遠程調試server(格式為: ./gdbserver 主機IP:建立連接的埠號 可執行文件【其中埠號一般1024以上沒有占用即可】,如下) ./gdbserver 10.10.51.47:5000 test
(5)在主機目錄下運行可執行程式:
arm-linux-gdb test
---》target remote 10.10.51.33:5000    (進入gdb調試後運行命令,連接gdbserver)

註釋: set solib-absolute-prefix與set solib-search-path命令分別用於設置GDB共用庫查找路徑首碼與共用庫查找路徑,以阻止GDB查找宿主機上的庫。若不指定這些路徑,遠程調試過程中GDB載入了宿主機的庫,會出現諸如“warning: GDB can't find the start of the function at 0x******”與“Cannot find bounds of current function”等錯誤提示。     文章主要主要來自參考、總結和實踐。  
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 看到一篇不知道是好好玩還是好玩玩童鞋的博客,發現一道好玩的mapreduce題目,地址http://www.cnblogs.com/songhaowan/p/7239578.html 如圖 由於自己太笨,看到一大堆java代碼就頭暈、心慌,所以用python把這個題目研究了一下。 題目:尋找共同好友 ...
  • Oracle: --concat(str1,str2)字元串拼接函數 select concat(t.uuid,t.name) from group t; select t.uuid || t.name from group t;--initcap(str)將每個單詞首字母大寫,其他字母小寫sele ...
  • 因為這兩天業務需求不是很多,昨天抽空研究了下MySQL的主從同步。 期間也遇到了許多問題,怕之後會忘記,也順便記錄下自己的成長經歷。所以寫這篇博文。 因為我是在VM虛擬機上進行的測試。 所以首先要把虛擬機的鏈接模式改為橋接模式。 在設置->硬體->網路適配器->網路連接里更改為橋接模式。 如果不是使 ...
  • 一、表與庫的概念 資料庫管理數據,它是以什麼樣的形式組成的? 生活中的表 >表 table多行多列,傳統的資料庫都是這樣的;聲明瞭表頭,一個表創建好了,剩下的就是往表中添加數據 多張表放在檔案中 >庫 database學生信息表,成績表,記過表 -> 都是這個班級的信息,將這幾張表放在一個文件夾中 ...
  • 書內容的思維導圖與讀後感 圖片顯示的大小有限制,可以右擊 在新標簽頁中打開圖片,或者, "點擊下載源文檔" : 思維 : 從《浪潮之巔》里描述的企業變遷,感受思維可以決定一個企業的方向,如果方向與新時代不符,很難改變走向頹廢或消失的結果,因為企業的基因問題,就是思維難以改變; 再到《智能時代》從第一 ...
  • 本文主要講述了PG的幾個主要進程,以及PG的核心架構。進程和體繫結構詳見下圖: 從上面的體繫結構圖可以看出來,PG使用經典的C/S架構,進程架構。在伺服器端有主進程、服務進程、子進程、共用記憶體以及文件存儲幾大部分,下麵著重講述伺服器端的進程部分: 1. Postmaster主進程和服務進程 當PG數 ...
  • 目前統計異常:ORA-00000、ORA-00001、ORA-00017、ORA-00018、ORA-00019、ORA-00020、ORA-01722、ORA-01747 文檔通過翻譯文檔、搜索資料及測試實踐對Oralce的異常做彙總、分析導致異常的各類原因及對應的解決方法,並備註一些知識點以助學... ...
  • 1. 原來的yum源做備份 2. 下載新的yum源 我用的vagrant centos 6.5 的box,預設沒有裝wget命令,yum源里也沒有wget包,下載下來替換 "阿裡yum源" "網易yum源" tips : 具體的linux版本及系統版本請自行選擇,當然,還有其他的源,選擇你自己喜歡的 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...