青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

天衣有縫

冠蓋滿京華,斯人獨(dú)憔悴~
posts - 35, comments - 115, trackbacks - 0, articles - 0
   :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理
部分觀點(diǎn)可能過于激進(jìn),讀者自行取舍。盡管我認(rèn)為程序是寫出來(lái)的,不是調(diào)出來(lái)的(和市場(chǎng)上的觀點(diǎn)正好相反),優(yōu)質(zhì)的程序應(yīng)該在模塊設(shè)計(jì)和實(shí)現(xiàn)時(shí)應(yīng)保證不出現(xiàn)什么bug。這當(dāng)然只是理想情況,還得取決于個(gè)人水平。程序應(yīng)在實(shí)現(xiàn)階段得到最大保證,而不是過度依賴調(diào)試器。一個(gè)徹底的反調(diào)試派,據(jù)說(shuō)真正的高手會(huì)在cpu旁放一顆爆米花:)轉(zhuǎn)載請(qǐng)保留原創(chuàng):http://m.shnenglu.com/jinglexy,MSN & Email:jinglexy at yahoo dot com dot cn

如果系統(tǒng)處于仿真的初期節(jié)點(diǎn),例如操作系統(tǒng)的初始化,調(diào)試還是很有必要的。這里是我在linux環(huán)境調(diào)試操作系統(tǒng)的相關(guān)工具,os開發(fā)者可參考,歡迎指正:)
(1)工具安裝:
linux安裝:bochs-2.3,insight-6.6,gcc-3.4(使用g++和as(binutils包中))
windows安裝:Xmanager Enterprise2.1
因?yàn)榫W(wǎng)管沒有l(wèi)otus和clearcase在linux系統(tǒng)下的支持,所以只好用兩個(gè)操作系統(tǒng)了。這樣也比較好,一個(gè)用于program,一個(gè)用于調(diào)試,畢竟bochs挺耗cpu的,就讓她干活好了。
bochs安裝:./configure --with-all-libs --enable-vbe --enable-gdb-stub && make && make install
insight-6.6安裝:包含了tck/tk,gdb-6.6,bfd等工具,使用insight時(shí)最好這樣設(shè)置環(huán)境變量:
export LC_ALL=en_US
否則運(yùn)行時(shí)可能會(huì)報(bào)錯(cuò):
Tcl_Init failed: can't read "env(TCL_LIBRARY)": no such variable
配置xserver用于遠(yuǎn)程訪問Linux圖形界面,這樣可以在windows上通過ssh執(zhí)行l(wèi)inux的圖形界面程序。


(2)相關(guān)文件:
bochs配置文件添加如下節(jié):
gdbstub: enabled=1, port=1234, text_base=0, data_base=0, bss_base=0

gdb調(diào)試腳本:
gdb的命令集可以寫入到一個(gè)文件中去,這樣避免了在啟動(dòng)時(shí)輸入一大堆命令,100%鼠標(biāo)操作?faint
保存所有命令到一個(gè)文件,每行一個(gè)命令,如下:
file ./vmjinix
target remote 127.0.0.1:1234
dir  ./arch/i386
dir  ./init
dir  ./kernel
dir  ./drivers
dir  ./drivers/video
dir  ./drivers/video/console
show dir
break start_kernel
continue
list 0
gdb和gdb前端執(zhí)行如下:
gdb -q -x gdb.command
insight -q -x gdb.command

其他腳本(磁盤自動(dòng)創(chuàng)建分區(qū),自動(dòng)安裝grub,拷貝內(nèi)核,及Makefile腳本),這些貼出來(lái)太長(zhǎng),花了好幾個(gè)小時(shí)寫好的,需要可以和我聯(lián)系(MSN & Email:jinglexy at yahoo dot com dot cn)

(3)調(diào)試方法
將內(nèi)核(jinix-1.2.1是我正在編寫的一個(gè)C++ 開源OS,歡迎參與)拷貝到linux主機(jī),配置samba共享,這樣可以在windows上開發(fā)(推薦使用slickedit 2007,哪位有l(wèi)inux上的2007版本可否發(fā)一個(gè)給我)。
使用xshell(ssh方式)登錄到linux主機(jī)上,編譯和調(diào)試都在這里了。
在ssh上執(zhí)行bochs -f bochsrc.txt.linux,
在ssh上執(zhí)行insight -q -x gdb.command
截圖如下:



匯編語(yǔ)言節(jié)點(diǎn)也可用使用bochs+gdb調(diào)試,在gdb斷點(diǎn)時(shí)候執(zhí)行:
disassemble $pc $pc+100(從當(dāng)前斷點(diǎn)處反匯編100字節(jié))
需要注意的是,在os的匯編初始化的前期階段,分頁(yè)機(jī)制往往未開啟,符號(hào)和地址不能一一對(duì)應(yīng),
這個(gè)時(shí)候不能進(jìn)行源碼級(jí)匯編調(diào)試,只能用最即便的反匯編調(diào)試了。
bochs-2.3中好像有個(gè)bug沒有解決,nexti執(zhí)行和stepi在call的時(shí)候居然一樣,如果要斷點(diǎn)到指定行,可以使用物理地址斷點(diǎn)。

(4)文章會(huì)不斷更新,如有什么好的想法可以在原博客討論:
http://m.shnenglu.com/jinglexy

(5)整理的一份常用gdb指令
x  /4wx ds:0x1234            x是線性地址空間
xp /4wx 0x1234                xp是物理地址空間
backtrace
print  variable                打印變量值
print  variable@10            打印變量后面的10個(gè)整數(shù)值
set    variable=2            賦值
whatis variable                顯示變量類型
ptype  variable                顯示數(shù)據(jù)結(jié)構(gòu)(變量類型加強(qiáng)版)

斷點(diǎn)類型:
break init_kernel.cpp:start_kernel    斷點(diǎn)在文件的函數(shù)
break init_kernel.cpp:101        斷點(diǎn)在文件的101行
break init_kernel.cpp:101 if var==100    條件斷點(diǎn)
break *0xc0102030
info break                查看所有斷點(diǎn)
delete breakpoint 3
delete breakpoint            刪除所有斷點(diǎn)
isable breakpoint 2
enable breakpoint 2


search string1                搜索字符串,從list結(jié)束行開始
reverse-search string1            方向搜索
set history expansion on        使用歷史命令
clear                    刪除剛才停止處的斷點(diǎn)
continue                從斷點(diǎn)開始繼續(xù)執(zhí)行
info break                顯示當(dāng)前斷點(diǎn)清單,包括到達(dá)斷點(diǎn)處的次數(shù)等
info files                顯示被調(diào)試文件的詳細(xì)信息
info func                顯示所有的函數(shù)名稱
info local                顯示當(dāng)函數(shù)中的局部變量信息
info prog                顯示被調(diào)試程序的執(zhí)行狀態(tài)
info var                顯示所有的全局和靜態(tài)變量名稱
info all
run
continue
step, next, stepi, nexti        i后綴表示執(zhí)行一條匯編指令

/*********************************************************************************
                                      格式說(shuō)明                                   /
/*********************************************************************************
x  /nuf addr檢查位于線性地址addr處的內(nèi)存內(nèi)容,若addr不指定,則默認(rèn)為下一個(gè)單元地址。
xp /nuf addr檢查位于物理地址addr處的內(nèi)存內(nèi)容。
其中的可選參數(shù)n、u和f的分別可為:
n欲顯示內(nèi)存單元的計(jì)數(shù)值,默認(rèn)值為1。
u表示單元大小,默認(rèn)選擇為'w':
b (Bytes)1字節(jié);
h (Halfwords)2字節(jié);
w (Words)4字節(jié);
g (Giantwords)8字節(jié)。
注意:這些縮略符與Intel的不同,主要是為了與GDB調(diào)試器的表示法一致。
f顯示格式,默認(rèn)選擇為'x':
x (hex)顯示為十六進(jìn)制數(shù)(默認(rèn)選擇);
d (decimal)顯示為十進(jìn)制數(shù);
u (unsigned)顯示成無(wú)符號(hào)十進(jìn)制數(shù);
o (octal)顯示成八進(jìn)制數(shù);
t (binary)顯示成二進(jìn)制數(shù)。
c (char)顯示字節(jié)代碼對(duì)應(yīng)的字符。若不是可顯示字符代碼,就直接顯示代碼。
*********************************************************************************/

說(shuō)明一下:bochs 和 insight本身單個(gè)執(zhí)行就非常慢,而且insight是通過ssh方式鏈接遠(yuǎn)程xserver執(zhí)行,所以速度巨慢,本文所述完全可以全部在linux上操作,不限于平臺(tái)。


Feedback

# re: OS調(diào)試相關(guān)的工具(附圖,原創(chuàng))  回復(fù)  更多評(píng)論   

2007-06-28 12:05 by eXile
據(jù)說(shuō)對(duì)于使用XP編程的人來(lái)說(shuō),使用調(diào)試器是可恥的行為。。。

# re: OS調(diào)試相關(guān)的工具(附圖,原創(chuàng))  回復(fù)  更多評(píng)論   

2007-06-28 12:27 by 天衣有縫
沒錯(cuò):)
調(diào)試器和ide一樣應(yīng)該被批判(辨正批判),不要過分依賴就行了,不少程序員因?yàn)楣ぞ邚?qiáng)大而降低了編碼的質(zhì)量。正如《unix編程藝術(shù)》中所說(shuō),c++程序員往往設(shè)計(jì)出更厚重的膠合層,這并非語(yǔ)言的過錯(cuò),但是設(shè)計(jì)人員卻傾向與此,這樣做的理由是c++比c強(qiáng)大

當(dāng)然,凡事都有兩面性

# re: OS調(diào)試相關(guān)的工具(附圖,原創(chuàng))  回復(fù)  更多評(píng)論   

2007-06-28 20:30 by bgate
其實(shí)其實(shí)直接用windows就可以調(diào)試,
用bochs在windows上運(yùn)行調(diào)試內(nèi)核,

# re: OS調(diào)試相關(guān)的工具(附圖,原創(chuàng))  回復(fù)  更多評(píng)論   

2007-06-29 08:37 by 天衣有縫
單獨(dú)用bochs我只知道匯編調(diào)試功能,如果要基于c/c++調(diào)試,不加gdb肯定是不行的。
你說(shuō)的應(yīng)該是cygwin下面把。

# re: OS調(diào)試相關(guān)的工具(附圖,原創(chuàng))  回復(fù)  更多評(píng)論   

2007-06-29 21:25 by bgate
當(dāng)然是要gdb了.
gdb + bochs + insight
只要用cygwin編譯帶gdb-stub的bochs就可以了.

# re: OS調(diào)試相關(guān)的工具(附圖,原創(chuàng))  回復(fù)  更多評(píng)論   

2007-06-29 21:51 by 天衣有縫
這樣做也是可以的,可能速度會(huì)快一些,我這里正好有兩臺(tái)linux主機(jī),所以就拿過來(lái)用了,呵
歡迎交流指正:)
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            国产一区二区高清| 亚洲小视频在线| 一区二区三区国产在线观看| 国产精品羞羞答答| 欧美日韩国产精品自在自线| 久久久国产精品一区| 亚洲综合丁香| 在线一区二区视频| 久久午夜视频| 性久久久久久| 国产亚洲福利| 亚洲午夜精品久久| 午夜视频一区| 亚洲欧美综合国产精品一区| 国产精品久久久久91| 亚洲午夜精品| 久久男女视频| 久久av资源网站| 最新成人av在线| 亚洲黄网站在线观看| 亚洲人www| 久久电影一区| 99伊人成综合| 免费观看久久久4p| 狠狠色狠狠色综合系列| 亚洲综合视频1区| 亚洲欧洲日本在线| 美女主播一区| 亚洲高清自拍| 免费成人性网站| 久久精品国产96久久久香蕉| 欧美日韩一区二区三区高清| 99热在线精品观看| 亚洲精品网站在线播放gif| 免费观看亚洲视频大全| 亚洲黄色影院| 亚洲欧洲精品一区二区| 欧美成人午夜免费视在线看片 | 一区二区三区三区在线| 久久免费99精品久久久久久| 亚洲激情视频| 国产精品久久久久久久久久尿| 久久国产精品久久久久久久久久 | 欧美日韩播放| 亚洲国产精品久久久久久女王| 欧美成人资源| 亚洲国产高清自拍| 亚洲大片一区二区三区| 在线视频欧美日韩| 欧美三级电影精品| 国产拍揄自揄精品视频麻豆| 亚洲理论电影网| 日韩香蕉视频| 精品二区久久| a4yy欧美一区二区三区| 国内精品视频在线播放| 亚洲激情偷拍| 国产一区深夜福利| 一区二区三区.www| 国内久久视频| 亚洲欧美日韩视频二区| 亚洲久久成人| 久久在线91| 久久久人成影片一区二区三区观看| 欧美国产在线观看| 久久久在线视频| 国产精品视屏| 亚洲一区二区三区免费观看| 亚洲看片网站| 免费在线成人av| 久久在线视频| 韩日在线一区| 毛片基地黄久久久久久天堂| 欧美在线观看你懂的| 欧美天堂亚洲电影院在线观看| 亚洲欧洲精品一区二区精品久久久| 国产区在线观看成人精品| 中国成人亚色综合网站| 欧美亚洲视频在线观看| 欧美视频在线一区二区三区| 亚洲日本一区二区| 亚洲午夜小视频| 国产欧美精品国产国产专区| 午夜一级久久| 亚洲高清在线观看| 亚洲免费在线视频一区 二区| 日韩午夜激情| 亚洲欧美色婷婷| 国产免费成人在线视频| 久久久久久亚洲综合影院红桃| 蜜桃av综合| 在线视频欧美日韩| 国产精品欧美日韩久久| 久久国产日韩| 亚洲精品乱码久久久久久| 亚欧成人在线| 亚洲精品日本| 国产日韩一区欧美| 欧美巨乳在线观看| 欧美在线观看日本一区| 亚洲免费av片| 亚洲欧洲精品天堂一级| 蜜桃精品久久久久久久免费影院| 中文在线不卡视频| 99精品福利视频| 亚洲高清av在线| 国语自产偷拍精品视频偷| 国产精品二区二区三区| 欧美日韩国产综合久久| 欧美成人免费网| 久久蜜桃香蕉精品一区二区三区| 亚洲美女精品一区| 亚洲福利国产| 亚洲一区在线观看免费观看电影高清 | 欧美国产亚洲视频| 欧美视频在线观看一区| 亚洲成色最大综合在线| 亚洲在线观看视频| 亚洲国产小视频在线观看| 欧美亚洲一区在线| 欧美三区在线观看| 亚洲国产成人porn| 老司机精品视频一区二区三区| 亚洲婷婷国产精品电影人久久| 欧美亚洲综合久久| 亚洲国产成人久久综合| 欧美一区二区三区四区在线观看| 欧美精品黄色| 亚洲精选一区| 亚洲人www| 欧美日韩国产限制| 中文一区二区在线观看| 日韩视频中文| 国产精品二区在线| 亚洲一级在线观看| 亚洲精品一线二线三线无人区| 欧美不卡激情三级在线观看| 韩国av一区二区| 蜜桃av一区二区三区| 久热精品视频在线免费观看| 亚洲国产免费看| 欧美激情网友自拍| 欧美色一级片| 免费精品99久久国产综合精品| 久久久精品国产99久久精品芒果| 欧美日本亚洲视频| 国产欧美日韩综合一区在线观看| 欧美国产精品日韩| 欧美另类在线播放| 在线观看国产精品网站| 欧美自拍丝袜亚洲| 亚洲天堂成人在线观看| 欧美日韩国产精品一区二区亚洲| 日韩午夜电影av| 一本久久a久久免费精品不卡| 欧美精品日韩一本| 在线亚洲精品福利网址导航| 亚洲国产精品一区二区尤物区| 久久亚洲精品伦理| 亚洲国产欧美一区二区三区久久 | 亚洲国产成人精品女人久久久| 亚洲美女啪啪| 亚洲永久精品大片| 欧美一区二区精品久久911| 国产在线精品一区二区夜色| 女生裸体视频一区二区三区| 国产精品v一区二区三区| 免费人成网站在线观看欧美高清| 欧美在线www| 亚洲视频国产视频| 久久免费高清| 久久国产成人| 欧美色播在线播放| 亚洲精品网站在线播放gif| 亚洲激情啪啪| 男人的天堂亚洲| 亚洲伊人久久综合| 欧美日韩福利| 这里只有精品视频在线| 99在线精品观看| 欧美日韩免费一区| 99综合精品| 亚洲男女自偷自拍| 国产精品地址| 午夜精品999| 牛牛精品成人免费视频| 亚洲一区二区久久| 久久久久青草大香线综合精品| 国产精品亚洲综合久久| 中文日韩欧美| 欧美影院成年免费版| 国内精品久久久久久久影视麻豆| 欧美中文字幕在线播放| 欧美在线视频一区二区三区| 国内精品伊人久久久久av一坑| 午夜亚洲福利| 亚洲国产精品久久人人爱蜜臀 | 久久久一区二区三区| 在线日韩欧美视频| 国产精品永久入口久久久|