日韩天堂,国产精品久久久久久久久久一区,羞羞羞网站,自拍视频网站,久久亚洲欧美成人精品,桃花阁成人网在线观看

Hello! 歡迎來(lái)到小浪云!


linux工具—gdb調(diào)試~~進(jìn)程


1.簡(jiǎn)介gdb調(diào)試工具1.1程序發(fā)布版本

通常,程序發(fā)布有兩種版本:調(diào)試模式(debug)和發(fā)布模式(release)。在Linux中,使用gcc/g++編譯時(shí),默認(rèn)生成的是release模式。要使用gdb進(jìn)行調(diào)試,必須在編譯時(shí)加入-g選項(xiàng),以便生成debug模式的程序。

linux工具—gdb調(diào)試~~進(jìn)程1.2前期準(zhǔn)備

開始調(diào)試前,需要安裝gdb和搭建環(huán)境。gdb通常是系統(tǒng)自帶的,可以通過(guò)gdb –version命令檢查其是否存在及版本信息。

環(huán)境準(zhǔn)備包括準(zhǔn)備一個(gè)可用的源文件,這里以mycode.c為例,其生成的程序?qū)?biāo)記為mycode。

以下是一個(gè)簡(jiǎn)單的c語(yǔ)言代碼示例,作為mycode.c的內(nèi)容:

linux工具—gdb調(diào)試~~進(jìn)程在編譯時(shí),-g選項(xiàng)表示生成的是調(diào)試版本,Makefile文件的其他內(nèi)容保持不變。

linux工具—gdb調(diào)試~~進(jìn)程1.3調(diào)試的開始與結(jié)束

啟動(dòng)gdb調(diào)試只需在gdb命令后加上當(dāng)前目錄下的生成文件名。看到gdb提示符(gdb)和閃爍的光標(biāo),即可輸入調(diào)試命令。

輸入q并按下回車鍵,即可結(jié)束調(diào)試過(guò)程。

linux工具—gdb調(diào)試~~進(jìn)程1.4調(diào)試相關(guān)命令1.4.1設(shè)置斷點(diǎn)

linux工具—gdb調(diào)試~~進(jìn)程這里的7和8表示程序的第7行和第8行設(shè)置斷點(diǎn)。

1.4.2單步執(zhí)行

linux工具—gdb調(diào)試~~進(jìn)程使用next命令,程序會(huì)按代碼順序逐行執(zhí)行。

1.4.3運(yùn)行程序

linux工具—gdb調(diào)試~~進(jìn)程使用run命令啟動(dòng)程序,運(yùn)行到斷點(diǎn)處暫停。

1.4.4查看變量值

linux工具—gdb調(diào)試~~進(jìn)程使用print x命令查看變量x的值。

1.4.5斷點(diǎn)間跳轉(zhuǎn)

linux工具—gdb調(diào)試~~進(jìn)程使用continue命令可從第一個(gè)斷點(diǎn)直接跳轉(zhuǎn)到第二個(gè)斷點(diǎn)。

1.4.6查看調(diào)試程序代碼

使用l 0命令從第0行開始顯示代碼,多次執(zhí)行l(wèi)命令會(huì)逐步顯示所有代碼。

linux工具—gdb調(diào)試~~進(jìn)程2.進(jìn)程入門2.1簡(jiǎn)要回顧

上次我們討論了操作系統(tǒng)及其與硬件架構(gòu)的層級(jí)關(guān)系。操作系統(tǒng)通過(guò)驅(qū)動(dòng)程序管理軟硬件資源,并通過(guò)描述和組織的方式實(shí)現(xiàn)對(duì)這些資源的管理。

2.2進(jìn)程初識(shí)

加載到操作系統(tǒng)中的程序就是進(jìn)程。操作系統(tǒng)可以同時(shí)運(yùn)行多個(gè)進(jìn)程。

當(dāng)需要加載多個(gè)進(jìn)程時(shí),操作系統(tǒng)需要管理這些進(jìn)程,管理方式是先描述后組織。

當(dāng)一個(gè)進(jìn)程加載到內(nèi)存中成為真正的進(jìn)程時(shí),操作系統(tǒng)會(huì)創(chuàng)建一個(gè)描述進(jìn)程的結(jié)構(gòu)體對(duì)象,稱為PCB(進(jìn)程控制塊)。PCB類似于面向對(duì)象編程中的對(duì)象,包含進(jìn)程的所有屬性。

2.3進(jìn)程屬性

PCB包含狀態(tài)、進(jìn)程編號(hào)、優(yōu)先級(jí)等屬性。

根據(jù)PCB,操作系統(tǒng)會(huì)將進(jìn)程的代碼和數(shù)據(jù)加載到內(nèi)存中。

進(jìn)程=內(nèi)核PCB+自己的數(shù)據(jù)和代碼。

管理多個(gè)進(jìn)程類似于對(duì)單鏈表進(jìn)行增刪查改操作。

PCB中包含指向代碼和數(shù)據(jù)的指針,操作系統(tǒng)只需管理PCB,PCB則管理代碼和數(shù)據(jù)。

多個(gè)進(jìn)程通過(guò)指針連接成鏈表,進(jìn)程管理相當(dāng)于對(duì)鏈表進(jìn)行增刪查改操作。每個(gè)PCB僅管理自己的數(shù)據(jù)和代碼,排隊(duì)時(shí)是PCB在排隊(duì),當(dāng)輪到某個(gè)PCB時(shí),它會(huì)調(diào)用自己的數(shù)據(jù)和代碼。

linux工具—gdb調(diào)試~~進(jìn)程2.3Linux中的PCB

Linux中,task_struct是PCB的一種數(shù)據(jù)類型,包含標(biāo)識(shí)符、狀態(tài)、優(yōu)先級(jí)、程序計(jì)數(shù)器、上下文數(shù)據(jù)、I/O狀態(tài)記錄、內(nèi)存指針等屬性。

Linux使用雙向鏈表組織進(jìn)程。

2.4查看進(jìn)程

使用ls /proc命令查看進(jìn)程,/proc是Linux中的一個(gè)目錄。

linux工具—gdb調(diào)試~~進(jìn)程當(dāng)前目錄概念:創(chuàng)建文件時(shí),若未指定位置,系統(tǒng)會(huì)在當(dāng)前目錄下自動(dòng)創(chuàng)建文件,因?yàn)檫M(jìn)程記住自己的目錄位置。

使用kill -9 進(jìn)程編號(hào)命令可以終止進(jìn)程。

2.5查看進(jìn)程標(biāo)識(shí)符

進(jìn)程標(biāo)識(shí)符是進(jìn)程的一個(gè)屬性,可以使用getpid系統(tǒng)調(diào)用查看當(dāng)前進(jìn)程的標(biāo)識(shí)符,使用getppid查看父進(jìn)程的標(biāo)識(shí)符。

任何進(jìn)程都是bash進(jìn)程的子進(jìn)程,bash進(jìn)程是所有進(jìn)程的父進(jìn)程,可以通過(guò)相應(yīng)命令查看其標(biāo)識(shí)符。

2.6創(chuàng)建進(jìn)程

運(yùn)行程序時(shí)會(huì)生成一個(gè)進(jìn)程。

使用fork系統(tǒng)調(diào)用可以創(chuàng)建新進(jìn)程,fork返回兩個(gè)值,父子進(jìn)程共享代碼,但數(shù)據(jù)在各自的內(nèi)存空間中獨(dú)立存在。

相關(guān)閱讀

主站蜘蛛池模板: 亚洲视频在线观看不卡 | 国产片欧美片亚洲片久久综合 | 波多野结衣视频免费 | 久久婷婷五月综合色丁香 | 久久综合一本 | 波多野结衣在线免费观看视频 | 小苹果无删减版 | 国产日产欧美一区二区三区 | 欧美亚洲网站 | 国产黄的网站免费 | 亚洲欧美婷婷 | 久久亚洲伊人成综合人影院 | 久久久久久久久综合 | 日本一区二区不卡久久入口 | 久久一区二区三区免费播放 | 综合伊人 | 亚洲一区二区三区国产精品 | 六月色婷婷 | 伊人99综合| 妖精永久免费观看 | 欧美激情精品久久久久久久九九九 | 亚洲人成一区二区三区 | 羞色视频 | 色四月婷婷 | 日本在线不卡一区二区 | 99在线小视频 | 精品中文字幕乱码一区二区 | 一级毛片在线看在线播放 | 五月婷婷开心综合 | 日韩欧美一区二区三区久久 | 综合色桃花久久亚洲 | 性视频网站在线 | 丁香网五月天 | 羞羞网站 | 国产精品成人一区二区三区 | 日本在线视频免费看 | 亚洲综合福利 | 亚洲国产天堂在线mv网站 | 国产美女视频一区 | 日本一区精品久久久久影院 | 婷婷成人丁香五月综合激情 |