簡體   English   中英

遠程GDB調試

[英]Remote GDB debugging

我花了一整天的時間試圖找到一種方法來從Qt Creator或Eclipse啟用GDB調試。 我了解到基本上有兩種方法可以啟動目標應用程序:

  • 使用ssh( ssh host gdb
  • 使用gdbserver

我能夠使用這兩種方法遠程啟動gdb並啟動應用程序。 但是,GDB永遠不會響應IDE中設置的任何斷點。 此外,我無法暫停應用程序以檢查程序狀態。 在Qt Creator中,我只得到一個模糊的堆棧跟蹤(我可能一直在查看ssh或gdb的痕跡......)。

任何人都可以幫助我開始嗎?

進展!

我發現使用Qt Creator 2.0有一個名為“附加和調試遠程應用程序”的功能。 它基於gdbserver。 好處是它在IDE的斷點處停止。 但是,有兩個問題:

  • 當它遇到斷點時,它只顯示匯編代碼,而不是源代碼。
  • 由於“收到信號”,GDB經常退出

我應該提一下,遠程可執行文件是使用舊版本的GCC編譯的,而不是安裝在我本地PC上的版本。 也許有些問題與此有關。

更新

我應該提一下,我切換到通過SSH在遠程機器上運行cgdb

遠程Qt Creator解決方案不穩定。 由於神秘的“收到信號”消息,GDB傾向於退出。

所以你主機上的GDB(你開發和編譯的機器,所以你有Qt Creator的地方)你必須讓它訪問“符號文件”。

我通常不使用Qt Creator,而是直接用GDB和gdbserver進行交叉編譯程序的遠程調試。 您可以嘗試一下,確保這對您有用,然后在Qt Creator中找到缺少的選項(或者這可能會幫助您找到遺漏的內容)。

在目標機器上運行:

gdbserver :5000 yourprogram

在主機上,運行gdb,然后加載符號文件:

(gdb) symbol-file yourprogram

在主機上的GDB上,您必須連接以將GDB連接到遠程gdbserver:

(gdb) target remote target_ip_address:5000

從那時起,您可以在主機上使用GDB來控制目標上的程序。

我希望這有幫助!

由於我們的makefile構建系統的特殊性,調試符號中包含的文件引用如下所示:

../src/main.cpp
../../src/utils/logger.cpp

對於GDB來說這沒問題,但是Qt Creator無法將這些路徑映射到實際文件。 我能夠通過在GDB init文件中添加'dir'語句來解決這個問題:

dir src
dir src/utils
...

現在它有效。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM