2012-05-10 37 views
5

我正在做一個基於xv6的操作系統類,並且我編寫了一個需要在其上運行的程序。使用gdb在xv6上調試用戶代碼

我知道我可以用make qemu-gdb調試內核代碼,但我不知道如何調試我自己的用戶程序。

可以說我想調試cat,我該怎麼做呢?

謝謝

P.S.是不是有一個xv6標籤?這個問題甚至應該去這裏嗎?

+0

':文件cat',':主要突破','run'有東西嗎? – shevski

+0

好吧,現在我覺得真的很愚蠢,因爲我確信我嘗試過。但現在我認爲可能是因爲我嘗試了'load'。謝謝!我在網上找到這個地方,甚至通過電子郵件發送了一些人,沒有人能告訴我這個...(回答,我會接受。) –

回答

5

file catbreak maincontinue

半參考running and debugging xv6

+0

'':'不需要,但它的作品! –

+0

對不起VIM符號 – shevski

+0

當我嘗試它,我需要做的 '文件_cat 突破主要 continue' 這是因爲_cat是這是在GDB運行主機 順便說上的文件的名稱窗口(所以你運行make qemu-gdb,然後在另一個窗口中運行gdb kernel)。 –

5

從XV6頂層目錄:

  1. 調試模式運行仿真器(假設沒有X11):make qemu-nox-gdb

  2. 在其他終端只運行調試器裝入內核符號與: gdb kernel這是重要的,否則調試器將內核和與用戶程序符號之間混淆,例如main()

  3. 從GDB接口運行:(gdb) target remote localhost:26000 其中26000是TCP端口#1報告在最後(這可能會改變)。

  4. 負載與(gdb)file user_program

  5. 放置一個斷點(gdb) break main和用戶EXEC繼續(gdb) continue

  6. 等等