導航:首頁 > 電腦知識 > 如何調試電腦內核

如何調試電腦內核

發布時間:2022-08-31 12:51:39

① 電腦的CPU內核怎麼調試

內存在計算機中的作用很大,電腦中所有運行的程序都需要經過內存來執行,如果執行的程序很大或很多,就會導致內存消耗殆盡。為了解決這個問題,Windows中運用了虛擬內存技術,即拿出一部分硬碟空間來充當內存使用,當內存佔用完時,電腦就會自動調用硬碟來充當內存,以緩解內存的緊張。舉一個例子來說,如果電腦只有128MB物理內存的話,當讀取一個容量為200MB的文件時,就必須要用到比較大的虛擬內存,文件被內存讀取之後就會先儲存到虛擬內存,等待內存把文件全部儲存到虛擬內存之後,跟著就會把虛擬內里儲存的文件釋放到原來的安裝目錄里了。下面,就讓我們一起來看看如何對虛擬內存進行設置吧。
虛擬內存的設置
對於虛擬內存主要設置兩點,即內存大小和分頁位置,內存大小就是設置虛擬內存最小為多少和最大為多少;而分頁位置則是設置虛擬內存應使用那個分區中的硬碟空間。對於內存大小的設置,如何得到最小值和最大值呢?你可以通過下面的方法獲得:選擇「開始→程序→附件→系統工具→系統監視器」(如果系統工具中沒有,可以通過「添加/刪除程序」中的Windows安裝程序進行安裝)打開系統監視器,然後選擇「編輯→添加項目」,在「類型」項中選擇「內存管理程序」,在右側的列表選擇「交換文件大小」。這樣隨著你的操作,會顯示出交換文件值的波動情況,你可以把經常要使用到的程序打開,然後對它們進行使用,這時查看一下系統監視器中的表現值,由於用戶每次使用電腦時的情況都不盡相同,因此,最好能夠通過較長時間對交換文件進行監視來找出最符合您的交換文件的數值,這樣才能保證系統性能穩定以及保持在最佳的狀態。
找出最合適的范圍值後,在設置虛擬內存時,用滑鼠右鍵點擊「我的電腦」,選擇「屬性」,彈出系統屬性窗口,選擇「性能」標簽,點擊下面「虛擬內存」按鈕,彈出虛擬內存設置窗口,點擊「用戶自己指定虛擬內存設置」單選按鈕,「硬碟」選較大剩餘空間的分區,然後在「最小值」和「最大值」文本框中輸入合適的范圍值。如果您感覺使用系統監視器來獲得最大和最小值有些麻煩的話,這里完全可以選擇「讓Windows管理虛擬內存設置」。
調整分頁位置
Windows 9x的虛擬內存分頁位置,其實就是保存在C盤根目錄下的一個虛擬內存文件(也稱為交換文件)Win386.swp,它的存放位置可以是任何一個分區,如果系統盤C容量有限,我們可以把Win386.swp調到別的分區中,方法是在記事本中打開System.ini(C:\Windows下)文件,在[386Enh]小節中,將「PagingDrive=C:WindowsWin386.swp」,改為其他分區的路徑,如將交換文件放在D:中,則改為「PagingDrive=D:Win386.swp」,如沒有上述語句可以直接鍵入即可。
而對於使用Windows 2000和Windows XP的,可以選擇「控制面板→系統→高級→性能」中的「設置→高級→更改」,打開虛擬內存設置窗口,在驅動器[卷標]中默認選擇的是系統所在的分區,如果想更改到其他分區中,首先要把原先的分區設置為無分頁文件,然後再選擇其他分區。
或者,WinXP一般要求物理內存在256M以上。如果你喜歡玩大型3D游戲,而內存(包括顯存)又不夠大,系統會經常提示說虛擬內存不夠,系統會自動調整(虛擬內存設置為系統管理)。
如果你的硬碟空間夠大,你也可以自己設置虛擬內存,具體步驟如下:右鍵單擊「我的電腦」→屬性→高級→性能 設置→高級→虛擬內存 更改→選擇虛擬內存(頁面文件)存放的分區→自定義大小→確定最大值和最小值→設置。一般來說,虛擬內存為物理內存的1.5倍,稍大一點也可以,如果你不想虛擬內存頻繁改動,可以將最大值和最小值設置為一樣。

44》虛擬內存使用技巧
對於虛擬內存如何設置的問題,微軟已經給我們提供了官方的解決辦法,對於一般情況下,我們推薦採用如下的設置方法:
(1)在Windows系統所在分區設置頁面文件,文件的大小由你對系統的設置決定。具體設置方法如下:打開"我的電腦"的"屬性"設置窗口,切換到"高級"選項卡,在"啟動和故障恢復"窗口的"寫入調試信息"欄,如果你採用的是"無",則將頁面文件大小設置為2MB左右,如果採用"核心內存存儲"和"完全內存存儲",則將頁面文件值設置得大一些,跟物理內存差不多就可以了。
小提示:對於系統分區是否設置頁面文件,這里有一個矛盾:如果設置,則系統有可能會頻繁讀取這部分頁面文件,從而加大系統盤所在磁軌的負荷,但如果不設置,當系統出現藍屏死機(特別是STOP錯誤)的時候,無法創建轉儲文件 (Memory.dmp),從而無法進行程序調試和錯誤報告了。所以折中的辦法是在系統盤設置較小的頁面文件,只要夠用就行了。
(2)單獨建立一個空白分區,在該分區設置虛擬內存,其最小值設置為物理內存的1.5倍,最大值設置為物理內存的3倍,該分區專門用來存儲頁面文件,不要再存放其它任何文件。之所以單獨劃分一個分區用來設置虛擬內存,主要是基於兩點考慮:其一,由於該分區上沒有其它文件,這樣分區不會產生磁碟碎片,這樣能保證頁面文件的數據讀寫不受磁碟碎片的干擾;其二,按照Windows對內存的管理技術,Windows會優先使用不經常訪問的分區上的
頁面文件,這樣也減少了讀取系統盤里的頁面文件的機會,減輕了系統盤的壓力。
(3)其它硬碟分區不設置任何頁面文件。當然,如果你有多個硬碟,則可以為每個硬碟都創建一個頁面文件。當信息分布在多個頁面文件上時,硬碟控制器可以同時在多個硬碟上執行讀取和寫入操作。這樣系統性能將得到提高。
小提示:
允許設置的虛擬內存最小值為2MB,最大值不能超過當前硬碟的剩餘空間值,同時也不能超過32位操作系統的內存定址范圍——4GB
.

② 如何調試linux內核

kgdb 調試
在內核配置選項里有 Kernel hacking---->
這一項,打開 再選擇你需要的功能。

③ xweb內核如何調試

虛擬化環境搭建,二進制庫文件,操作系統的啟動初始化文件。虛擬化的環境搭建,選擇的是qemu這款堪稱虛擬化的鼻祖軟體,雖然因為連晶元也一起虛擬導致運行速度變慢,但它也結合了真實晶元輔助加速的KVM,支持其他晶元架構的功能簡直就是交叉編譯的神器。

④ 怎麼激活和關閉Windows內核調試器

修復此問題 禁用內核調試,在 Visual Studio 中調試。- 或 -使用內核調試器而不是 Visual Studio 進行調試。- 或 -在內核調試器中禁用用戶模式異常。在當前會話中禁用內核調試 在命令提示處,鍵入: 復制代碼 Kdbgctrl.exe -d對所有會話禁用內核調試 (Windows Vista) 在命令提示處,鍵入: 復制代碼 bcdedit /debug off 重新啟動計算機。對所有會話禁用內核調試(其他 Windows 操作系統) 在系統驅動器(通常為 C:\)上查找 boot.ini。boot.ini 文件可能是隱藏文件並且是只讀的。因此,必須使用下面的命令才能看到它: 復制代碼 dir /ASH用記事本打開 boot.ini 並移除下列選項: 復制代碼 /debug /debugport /baudrate重新啟動計算機。使用內核調試器進行調試 如果內核調試器已掛鉤,將顯示一條消息,詢問是否要繼續調試。單擊按鈕繼續。您也許會收到 User break exception(Int 3)。如果出現此情況,請鍵入下面的內核調試器命令以繼續調試:gn

電腦如何調整播放內核

調整內核:
當我們想要調試操作系統時,可以修改操作系統啟動參數,方法有二,一是在系統啟動時F8下,選擇調試模式,二是,在啟動後,修改啟動配置參數。Windows xp /2003 使用 boot.ini 存儲啟動參數,Windows Vista / 7使用BCD存儲啟動參數。

對於Windows xp /2003 我們可以直接修改boot.ini 添加調試參數,也可以使用bootcfg /debug 命令添加。
對於調試遠程內核,我們可能要使用串口,在boot.ini中指定操作系統條目後,添加調試參數 /debug /port=com1 /baudrate=115200。在調試器WinDbg中也要指定相同的波特率參數,否者無法正常通信。
使用虛擬機調試,我們一般沒有串口,尤其是筆記本電腦,這時候怎麼操作呢:
1、使用虛擬串口添加工具 vpsd 6.9(在前幾篇日誌中有對此軟體的介紹)在電腦中添加一對調試串口。如com1,com2。
在虛擬機欲調試操作系統的硬體配置中指定調試串口com1.,注意取消「等待數據機打開串口」,否者串口無法正常打開。
在調試器Windbg中指定使用串口com2,其他參數保持與啟動配置參數相同。

⑥ 如何調試0.11版的linux內核

編譯64位程序,不一定要編譯機器是64位的,但是32位機器默認安裝的gcc編譯環境還是不能用來編譯64位程序。編譯64位程序,需要加上-m64編譯器參數,默認安裝的gcc已經支持該參數,但是缺少64位機器指令相關的文件,所以不能編譯,會出現下面的錯誤
In file included from /usr/include/features.h:378,
from /usr/include/assert.h:37,
from ../../../include/tinyxml/tinystr.h:42,
from ../../../src/tinyxml/tinystr.cpp:32:
/usr/include/gnu/stubs.h:9:27: error: gnu/stubs-64.h: 沒有那個文件或目錄
這時候需要安裝 gcc所有支持文件 sudo apt-get install gcc-multilib
將會安裝下列額外的包:
cpp-4.4 g++-4.4 gcc-4.4 gcc-4.4-base gcc-4.4-multilib lib64gcc1 lib64gomp1 libc6-amd64 libc6-dev-amd64 libgcc1 libgomp1

⑦ 如何對win7 進行系統內核調試

windbg的設置與XP一樣
在WIN7或者Vista里的設置為:
在以管理員身份運行的 cmd 下鍵入並執行命令:(每行一條命令)

1
2
3

bcdedit /bootdebug ON
bcdedit /debug ON
bcdedit /dbgsettings serial baudrate:115200 debugport:1bcdedit / {current} /d DebugEntrybcdedit /displayorder {current} {d3d5f290-f64b-11de-a86d-aba3805c5629}bcdedit /debug {d3d5f290-f64b-11de-a86d-aba3805c5629} ON

⑧ 有沒什麼工具可以調試Linux內核的

qemu模擬器,內帶gdbserver,可以很方便的源碼調試。
kdb,kgdb之類的也是調試器,最簡單的就是printk看看

⑨ 怎麼用gdb和bochs調試內核

1. 安裝 Bochs
編譯 Bochs 要加入 --enable-gdb-stub 選項:
$ ./configure --enable-gdb-stub
$ make
$ sudo make install

2. 生成內核
修改 Makefile
將 CFLAGS 加入 -g 選項,以便加入調試符號
CFLAGS = -I include/ -I include/sys/ -c -g -fno-builtin -Wall
由於加了調試符號之後 kernel.bin 太大,所以將其 strip 之後在拷貝入磁碟映像

sudo cp -fv kernel.bin /mnt/floppy

改為:
strip kernel.bin -o kernel.bin.stripped
sudo cp -fv kernel.bin.stripped /mnt/floppy/kernel.bin

如此一來,在 bochs 虛擬機裡面執行的 kernel.bin 是 strip 之後的,過會兒用來交給 gdb 的 kernel.bin 是帶調試符號的。
編譯內核
$ make image

3. 啟動 Orange'S
修改 bochsrc
加入這么一行:
gdbstub: enabled=1, port=1234, text_base=0, data_base=0, bss_base=0

運行
$ bochs -q -f bochsrc.gdb # 注意必須用加入了 --enable-gdb-stub 編譯選項的 bochs

4. 用 gdb 調試
打開另一控制台,運行 gdb
$ gdb

在 gdb 中調試
(gdb) file kernel.bin ← 注意這里的 kernel.bin 必須是加入了 -g 編譯選項的帶調試符號的內核
Reading symbols from /home/forrest/local/src/osfs/oranges/phases/chapter11/a/kernel.bin...done.
(gdb) target remote localhost:1234
Remote debugging using localhost:1234
0x0000fff0 in ?? ()
(gdb) b start.c:26
Breakpoint 1 at 0x14a6: file kernel/start.c, line 26.
(gdb) c
Continuing.
Breakpoint 1, cstart () at kernel/start.c:26
26 disp_str("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n-----\"cstart\" begins-----\n");
(gdb) n
29 memcpy( &gdt, /* New GDT */
(gdb)

.gdbinit
由於每次都需要執行 file kernel.bin 和 target remote localhost:1234 兩個命令,所以可以建立一個 .gdbinit 文件,比如:
$ vi .gdbinit
file kernel.bin
target remote localhost:1234
set disassembly-flavor intel
b start.c:26
b kernel/main.c:183

這樣下次直接執行 gdb 這個文件里的命令即可自動執行。
.gdbinit 可以做許多事,比如上例中就加了倆斷點。
在 .gdbinit 中自定義函數
在 .gdbinit 中可添加自定義函數,比如:
define lsproc
set $count = 16
set $idx = 0
printf "The first %d TASKS/PROCS:\n",$count
while($idx < $count)
if(proc_table[$idx].p_flags != 0x20)
if($idx < 5)
printf "[%2d] TASK: %8s",$idx,proc_table[$idx].name
printf "\t p_flags: %8Xh\n",proc_table[$idx].p_flags
else
printf "[%2d] PROC: %8s",$idx,proc_table[$idx].name
printf "\t p_flags: %8Xh\n",proc_table[$idx].p_flags
end
end
set $idx++
end
end

這樣在 gdb 中執行一個 lsproc,便可列印出所有進程的信息,巨方便:
(gdb) lsproc
The first 16 TASKS/PROCS:
[ 0] TASK: TTY p_flags: 4h
[ 1] TASK: SYS p_flags: 4h
[ 2] TASK: HD p_flags: 4h
[ 3] TASK: FS p_flags: 4h
[ 4] TASK: MM p_flags: 4h
[ 5] PROC: INIT p_flags: Ch
[ 6] PROC: TestA p_flags: 0h
[ 7] PROC: TestB p_flags: 0h
[ 8] PROC: TestC p_flags: 0h
[ 9] PROC: INIT_9 p_flags: 4h
[10] PROC: INIT_10 p_flags: 4h

⑩ 如何調試操作系統內核及引導程序

Linux內核調試方法
kdb:只能在匯編代碼級進行調試;
優點是不需要兩台機器進行調試。
gdb:在調試模塊時缺少一些至關重要的功能,它可用來查看內核的運行情況,包括反匯編內核函數。
kgdb:能很方便的在源碼級對內核進行調試,缺點是kgdb只能進行遠程調試,它需要一根串口線及兩台機器來調試內核(也可以是在同一台主機上用vmware軟體運行兩個操作系統來調試)
printk() 是調試內核代碼時最常用的一種技術。在內核代碼中的特定位置加入printk() 調試調用,可以直接把所關心的信息打列印到屏幕上,從而可以觀察程序的執行路徑和所關心的變數、指針等信息。 Linux 內核調試器(Linux kernel debugger,kdb)是 Linux 內核的補丁,它提供了一種在系統能運行時對內核內存和數據結構進行檢查的辦法。Oops、KDB在文章掌握 Linux 調試技術有詳細介紹,大家可以參考。 Kprobes 提供了一個強行進入任何內核常式,並從中斷處理器無干擾地收集信息的介面。使用 Kprobes 可以輕松地收集處理器寄存器和全局數據結構等調試信息,而無需對Linux內核頻繁編譯和啟動,具體使用方法,請參考使用 Kprobes 調試內核。
/proc文件系統
在 /proc 文件系統中,對虛擬文件的讀寫操作是一種與內核通信的手段,要查看內核回環緩沖區中的消息,可以使用 dmesg 工具(或者通過 /proc 本身使用 cat /proc/kmsg 命令)。清單 6 給出了 dmesg 顯示的最後幾條消息。
清單 6. 查看來自 LKM 的內核輸出
[root@plato]# dmesg | tail -5
cs: IO port probe 0xa00-0xaff: clean.
eth0: Link is down
eth0: Link is up, running at 100Mbit half-plex
my_mole_init called. Mole is now loaded.
my_mole_cleanup called. Mole is now unloaded.

可以在內核輸出中看到這個模塊的消息。現在讓我們暫時離開這個簡單的例子,來看幾個可以用來開發有用 LKM 的內核 API。
調試工具
使用調試器來一步步地跟蹤代碼,查看變數和計算機寄存器的值。在內核中使用互動式調試器是一個很復雜的問題。內核在它自己的地址空間中運行。許多用戶空間下的調試器所提供的常用功能很難用於內核之中,比如斷點和單步調試等。

閱讀全文

與如何調試電腦內核相關的資料

熱點內容
網路共享中心沒有網卡 瀏覽:527
電腦無法檢測到網路代理 瀏覽:1376
筆記本電腦一天會用多少流量 瀏覽:593
蘋果電腦整機轉移新機 瀏覽:1380
突然無法連接工作網路 瀏覽:1075
聯通網路怎麼設置才好 瀏覽:1230
小區網路電腦怎麼連接路由器 瀏覽:1053
p1108列印機網路共享 瀏覽:1215
怎麼調節台式電腦護眼 瀏覽:715
深圳天虹蘋果電腦 瀏覽:951
網路總是異常斷開 瀏覽:617
中級配置台式電腦 瀏覽:1011
中國網路安全的戰士 瀏覽:637
同志網站在哪裡 瀏覽:1420
版觀看完整完結免費手機在線 瀏覽:1464
怎樣切換默認數據網路設置 瀏覽:1113
肯德基無線網無法訪問網路 瀏覽:1290
光纖貓怎麼連接不上網路 瀏覽:1495
神武3手游網路連接 瀏覽:969
局網列印機網路共享 瀏覽:1005