這一篇主要講解如何在Ubuntu環境下調試mbsystem的代碼。此次以EM2040採集的all格式記錄文件爲例,查看並驗證其如何解析讀取配置文件。
首先通過閱讀源碼發現,讀取配置文件代碼位於mbr_em710raw_rd_start函數,同時mbinfo工具會最終會通過mbr_em710raw.c文件調用mbr_em710raw_rd_start函數。可以使用這個命令進行測試。
(1)啓動gdb
(2)設置參數命令
(3)分析加斷點
可通過查看源碼,通過函數方式添加斷點mbr_em710raw_rd_start
添加斷點成功(b爲break縮寫)
(4)啓動執行代碼
r爲run縮寫,運行至斷點處
執行至斷點處,上層爲斷點所在函數
(5)單步調試
Step和next進行單步調試
查看當前代碼
(6)重新加斷點,執行至新斷點處
b是break的簡寫
(7)打印輸出需要查看的設備信息
也可以使用p store->type 其中p是print的簡寫。
也可使用display store->type輸出顯示信息
注:
其他說明
(1)輸出顯示指針存儲的波束點水深信息。
(2)mb是否可以用來調試?
可以調試,帶有調試信息的可執行文件即可調試
(3)如果有多個.o文件a啓動b,如何調試b中代碼。
直接啓動a,添加b中代碼的函數斷點,會將b符號加載進去
(4)mb目錄下對應的.o文件是什麼文件?
可以看出是含有調試信息的目標文件。不能用來調試(使用gdb加載時會加載成功,但是執行會失敗,不是可執行文件)
(5)用gdb調試時想打印變量值,結果出現了optimized out,打印不出變量內容
打開configure文件和libtool文件,搜索-O2,將所有-O2替換爲-O0,然後重新生成makefile即可。
參考資料:
[1]mbcookbook.pdf https://www.mbari.org/wp-content/uploads/2016/03/mbcookbook.pdf
[2] https://github.com/dwcaress/MB-System
[4] https://www.mbari.org/products/research-software/mb-system/
[5] https://blog.csdn.net/baidu_38172402/article/details/81152192
[6]https://www.mbari.org/products/research-software/mb-system/mb-system-announcements-archive/