2010年2月24日 星期三

GDB Debug

  1. 在Embedded系統上常被用到的就是GDB Debug的機制,透過Remote control 設定 break point or print register status... 底下是目前最常看到的Debug平台,透過PC 端compiler好 Target(ARM)端的執行檔(.EXE),在藉由JTAG燒入到Target上,最後透過GDB Remote Debug的方式,設定Break Point or Dump Register的方法,達到Realtime Debug.
  2. 這邊我們簡化流程,把Target端跟Host端都在我們的PC上來模擬Embedded Debug的流程.
  3. Step 1. 安裝GDB Debug http://www.gnu.org/software/gdb/ 安裝參考 http://www.zychip.com/html/support/linux_gdb/index.php 這邊要注意,因為我們不須代入ARM-Linux的compiler.只要鍵入安裝路徑就可 % cd gdb-7.0.1 % ./configure --prefix=/usr/local/bin % make % make install PS: 切記路徑必須要在Path中,這樣才能被呼叫. Step 2. check /usr/local/bin/ 內有 gdb.exe, gdbserver.exe check GDB 安裝完成 % gdb 看使否會進GDB 的 console Step 3. sample code && Debug hello.c 程式碼下載 http://sites.google.com/site/funningboy/perl_code/hello.c?attredirects=0&d=1

    Step 4. 模擬Target 端 % gcc -g -O0 -o hello.gdb hello.c % cp hello.gdb hello % strip -s hello 這邊藉由gcc complie出我們要模擬的Target端,Post的部分我們就省略了. 要模擬Traget的部分要靠 gdbsever的功能,請鍵入 % gdbserver :3333 hello
    會模擬在Target端是由port 3333來連線,且運行hello
    Step 4 模擬PC連到 Target 端 請在開個新的console,鍵入 % gdb target remote 127.0.0.1:3333 會連到我們剛剛設定的Target端.連上後,就可以做Remote Debug
執行結果
Reference links

    http://opencsl.openfoundry.org/Lab05_debugger.rst.html http://opencsl.openfoundry.org/ http://www.zychip.com/html/support/linux_gdb/index.php

3 則留言:

  1. or type
    gcc -Wall -g -o hello hello.c

    回覆刪除
  2. Howto: Porting the GNU Debugger
    with Or1Km

    http://www.embecosm.com/appnotes/ean3/embecosm-howto-gdb-porting-ean3-issue-2.html#id2708968

    回覆刪除
  3. good ref
    http://web.cecs.pdx.edu/~jrb/cs201/lectures/handouts/gdbcomm.txt

    回覆刪除