-
>
全國(guó)計(jì)算機(jī)等級(jí)考試最新真考題庫(kù)模擬考場(chǎng)及詳解·二級(jí)MSOffice高級(jí)應(yīng)用
-
>
決戰(zhàn)行測(cè)5000題(言語(yǔ)理解與表達(dá))
-
>
軟件性能測(cè)試.分析與調(diào)優(yōu)實(shí)踐之路
-
>
第一行代碼Android
-
>
JAVA持續(xù)交付
-
>
EXCEL最強(qiáng)教科書(完全版)(全彩印刷)
-
>
深度學(xué)習(xí)
C/C++代碼調(diào)試的藝術(shù)(第2版) 版權(quán)信息
- ISBN:9787115608062
- 條形碼:9787115608062 ; 978-7-115-60806-2
- 裝幀:一般膠版紙
- 冊(cè)數(shù):暫無(wú)
- 重量:暫無(wú)
- 所屬分類:>
C/C++代碼調(diào)試的藝術(shù)(第2版) 本書特色
適讀人群 :本書適合C/C++的初學(xué)者、準(zhǔn)備 C/C++相關(guān)開(kāi)發(fā)崗位面試的求職者、經(jīng)驗(yàn)豐富的開(kāi)發(fā)人員以及常遭遇代碼調(diào)試難題的開(kāi)發(fā)人員閱讀。1.《C/C++代碼調(diào)試的藝術(shù)》新升級(jí),更新了更豐富的代碼調(diào)試真實(shí)案例,為讀者提供更全的解決方案2.通俗易懂,涵蓋10+程序調(diào)試要點(diǎn),每章均涉及Windows和Linux兩大主流平臺(tái)的代碼調(diào)試實(shí)例,從基本知識(shí)開(kāi)始,手把手帶你debug3.案例豐富,精選100+調(diào)試案例,對(duì)真實(shí)業(yè)務(wù)中的死鎖、動(dòng)態(tài)庫(kù)調(diào)試、內(nèi)存泄漏、內(nèi)存破壞、崩潰轉(zhuǎn)儲(chǔ)文件調(diào)試等問(wèn)題給出解決方案,輕松解決常見(jiàn)業(yè)務(wù)代碼難題4.熱門講師,出自云塢科技有限公司的聯(lián)合創(chuàng)立人、51CTO的熱門講師之手,集作者20多年一線開(kāi)發(fā)精華于一體,兼具實(shí)用性和參考性
C/C++代碼調(diào)試的藝術(shù)(第2版) 內(nèi)容簡(jiǎn)介
本書圍繞C/C++程序調(diào)試這一主題,系統(tǒng)深入地介紹了在Windows和Linux操作系統(tǒng)上如何高效地調(diào)試C/C++程序。 本書分為11章,內(nèi)容涵蓋了程序調(diào)試的基本知識(shí)、Visual C++調(diào)試的基本功能與技巧、Linux系統(tǒng)中g(shù)db工具的使用、死鎖調(diào)試、動(dòng)態(tài)庫(kù)調(diào)試、內(nèi)存檢查、遠(yuǎn)程調(diào)試、轉(zhuǎn)儲(chǔ)文件調(diào)試分析、發(fā)行版調(diào)試,以及調(diào)試的高級(jí)話題和調(diào)試方面的擴(kuò)展知識(shí)。 本書作為學(xué)習(xí)C/C++調(diào)試技術(shù)的重要資料,講解通俗易懂,選取的示例注重理論與實(shí)際的聯(lián)系。
C/C++代碼調(diào)試的藝術(shù)(第2版) 目錄
1.1 BUG與Debug 1
1.2 為什么選擇C/C++ 3
1.3 什么是調(diào)試器 4
第 2章 Visual C++調(diào)試基本功能 5
2.1 Visual C++簡(jiǎn)介 5
2.1.1 VC 2019版本選擇 7
2.1.2 VC 2019安裝 8
2.2 斷點(diǎn)管理 9
2.2.1 設(shè)置/刪除斷點(diǎn) 10
2.2.2 禁用斷點(diǎn) 10
2.2.3 查看所有斷點(diǎn) 11
2.3 調(diào)試執(zhí)行 14
2.3.1 啟動(dòng)調(diào)試 14
2.3.2 逐語(yǔ)句執(zhí)行 15
2.3.3 逐過(guò)程執(zhí)行 17
2.3.4 跳出執(zhí)行 17
2.3.5 運(yùn)行到光標(biāo)處 17
2.3.6 多次執(zhí)行代碼 18
2.4 監(jiān)視/快速監(jiān)視 20
2.4.1 快速監(jiān)視 20
2.4.2 監(jiān)視窗口 21
2.4.3 表達(dá)式支持 23
2.5 內(nèi)存查看 25
2.5.1 字符串內(nèi)存布局 26
2.5.2 整型變量?jī)?nèi)存布局 27
2.6 通過(guò)“局部變量”窗口和“自動(dòng)”窗口查看變量 28
2.6.1 “局部變量”窗口查看變量 28
2.6.2 “自動(dòng)”窗口查看變量 30
2.7 即時(shí)窗口 31
2.7.1 顯示變量的值 31
2.7.2 執(zhí)行內(nèi)嵌函數(shù) 32
2.8 調(diào)用堆棧 32
2.8.1 調(diào)用堆棧基本信息 33
2.8.2 設(shè)置符號(hào)信息 33
2.9 多線程管理 36
2.9.1 創(chuàng)建多線程測(cè)試項(xiàng)目 36
2.9.2 開(kāi)始調(diào)試多線程程序 37
2.10 查看錯(cuò)誤碼 40
2.11 調(diào)試宏assert使用 43
2.11.1 assert宏簡(jiǎn)介 44
2.11.2 使用assert宏的注意事項(xiàng) 45
2.12 其他 46
2.12.1 編輯并繼續(xù)調(diào)試 46
2.12.2 字符串可視化工具 47
2.12.3 條件斷點(diǎn) 48
2.12.4 函數(shù)斷點(diǎn) 51
2.12.5 數(shù)據(jù)斷點(diǎn) 52
2.12.6 VC調(diào)試時(shí)常用的快捷鍵和組合鍵列表 55
第3章 Linux系統(tǒng)下gdb調(diào)試基本功能 57
3.1 Linux系統(tǒng)下C/C++編程的基本知識(shí) 57
3.1.1 開(kāi)發(fā)環(huán)境安裝 58
3.1.2 開(kāi)發(fā)第 一個(gè)C/C++程序 61
3.2 gdb簡(jiǎn)介 68
3.2.1 gdb的安裝 68
3.2.2 gdb常用功能概覽 70
3.3 調(diào)試執(zhí)行 71
3.3.1 啟動(dòng)調(diào)試 71
3.3.2 啟動(dòng)調(diào)試并添加參數(shù) 74
3.3.3 附加到進(jìn)程 75
3.4 斷點(diǎn)管理 77
3.4.1 設(shè)置斷點(diǎn) 77
3.4.2 啟用/禁用斷點(diǎn) 86
3.4.3 啟用斷點(diǎn)一次 87
3.4.4 啟用斷點(diǎn)并刪除 88
3.4.5 啟用斷點(diǎn)并命中N次 89
3.4.6 忽略斷點(diǎn)前N次命中 90
3.4.7 查看斷點(diǎn) 90
3.4.8 刪除斷點(diǎn) 91
3.5 程序執(zhí)行 92
3.5.1 啟動(dòng)程序 92
3.5.2 繼續(xù)運(yùn)行 93
3.5.3 繼續(xù)運(yùn)行并跳過(guò)當(dāng)前斷點(diǎn)N次 94
3.5.4 繼續(xù)運(yùn)行直到當(dāng)前函數(shù)執(zhí)行完成 94
3.5.5 單步執(zhí)行 95
3.5.6 逐過(guò)程執(zhí)行 96
3.6 查看當(dāng)前函數(shù)參數(shù) 96
3.7 查看/修改變量的值 97
3.7.1 使用gdb內(nèi)嵌函數(shù) 98
3.7.2 查看結(jié)構(gòu)體/類的值 99
3.7.3 查看數(shù)組 101
3.8 自動(dòng)顯示變量的值 102
3.9 查看源代碼 104
3.10 查看內(nèi)存 106
3.11 查看寄存器 109
3.12 查看調(diào)用棧 111
3.12.1 查看棧回溯信息 112
3.12.2 切換棧幀 113
3.12.3 查看幀信息 115
3.13 線程管理 115
3.13.1 查看所有線程信息 118
3.13.2 切換線程 118
3.13.3 為線程設(shè)置斷點(diǎn) 119
3.13.4 為線程執(zhí)行命令 120
3.14 其他 121
3.14.1 觀察點(diǎn) 121
3.14.2 捕獲點(diǎn) 124
3.14.3 搜索源代碼 126
3.14.4 查看變量類型 128
3.14.5 跳轉(zhuǎn)執(zhí)行 130
3.14.6 窗口管理 132
3.14.7 調(diào)用Shell命令 134
3.14.8 assert宏使用 135
3.14.9 gdb常用命令列表 137
第4章 多線程死鎖調(diào)試 141
4.1 創(chuàng)建多線程 142
4.2 多線程的同步 144
4.3 C++標(biāo)準(zhǔn)庫(kù)中的鎖 146
4.3.1 std::mutex類 146
4.3.2 std::timed_mutex類 149
4.3.3 std::recursive_mutex和std::recursive_timed_mutex 149
4.4 死鎖調(diào)試 150
4.4.1 Windows系統(tǒng)中的死鎖調(diào)試 151
4.4.2 Linux系統(tǒng)中的死鎖調(diào)試 153
4.4.3 死鎖條件 156
4.4.4 解決死鎖 157
第5章 調(diào)試動(dòng)態(tài)庫(kù) 160
5.1 Windows系統(tǒng)動(dòng)態(tài)庫(kù)開(kāi)發(fā)與調(diào)試 161
5.1.1 創(chuàng)建動(dòng)態(tài)庫(kù) 161
5.1.2 使用動(dòng)態(tài)庫(kù) 164
5.1.3 調(diào)試動(dòng)態(tài)庫(kù) 165
5.2 Linux系統(tǒng)動(dòng)態(tài)庫(kù)開(kāi)發(fā)與調(diào)試 170
5.2.1 創(chuàng)建動(dòng)態(tài)庫(kù) 171
5.2.2 使用動(dòng)態(tài)庫(kù) 174
5.2.3 調(diào)試動(dòng)態(tài)庫(kù) 177
第6章 內(nèi)存檢查 183
6.1 VC調(diào)試器和C/C++內(nèi)存檢查機(jī)制 183
6.1.1 內(nèi)存泄漏測(cè)試程序 184
6.1.2 使用VC運(yùn)行時(shí)庫(kù)函數(shù)來(lái)檢測(cè)內(nèi)存泄漏 186
6.1.3 檢測(cè)堆內(nèi)存破壞(堆溢出) 193
6.1.4 使用數(shù)據(jù)斷點(diǎn)來(lái)定位堆內(nèi)存破壞問(wèn)題 196
6.1.5 使用地址擦除系統(tǒng)(AddressSanitizer)來(lái)定位內(nèi)存問(wèn)題 206
6.1.6 其他調(diào)試函數(shù) 214
6.2 Linux系統(tǒng)內(nèi)存檢查 215
6.2.1 檢查內(nèi)存泄漏 215
6.2.2 檢查堆溢出 217
6.2.3 檢查棧溢出 218
6.2.4 檢查全局變量的內(nèi)存溢出 219
6.2.5 檢查內(nèi)存被釋放后繼續(xù)使用 220
第7章 遠(yuǎn)程調(diào)試 222
7.1 遠(yuǎn)程調(diào)試簡(jiǎn)介 222
7.2 Visual C++遠(yuǎn)程調(diào)試 223
7.2.1 準(zhǔn)備測(cè)試程序 223
7.2.2 準(zhǔn)備目標(biāo)機(jī)環(huán)境 223
7.2.3 啟動(dòng)遠(yuǎn)程調(diào)試 226
7.3 Linux系統(tǒng)gdb遠(yuǎn)程調(diào)試 232
7.3.1 準(zhǔn)備測(cè)試程序 232
7.3.2 準(zhǔn)備目標(biāo)機(jī)環(huán)境 233
7.3.3 啟動(dòng)調(diào)試 233
7.4 使用VC遠(yuǎn)程調(diào)試Linux程序 236
7.5 使用VC創(chuàng)建Linux程序并調(diào)試 238
第8章 轉(zhuǎn)儲(chǔ)文件調(diào)試分析 242
8.1 Windows系統(tǒng)中的轉(zhuǎn)儲(chǔ)文件分析 242
8.1.1 轉(zhuǎn)儲(chǔ)文件死鎖調(diào)試分析 242
8.1.2 崩潰轉(zhuǎn)儲(chǔ)調(diào)試分析 245
8.2 Linux系統(tǒng)中的轉(zhuǎn)儲(chǔ)文件分析 251
8.2.1 內(nèi)核轉(zhuǎn)儲(chǔ)文件調(diào)試分析死鎖 251
8.2.2 內(nèi)核轉(zhuǎn)儲(chǔ)文件調(diào)試分析程序崩潰問(wèn)題 255
第9章 發(fā)行(Release)版調(diào)試 259
9.1 在VC中調(diào)試發(fā)行版 259
9.1.1 去優(yōu)化測(cè)試 259
9.1.2 保留優(yōu)化調(diào)試 262
9.2 在gdb中調(diào)試發(fā)行版 266
9.2.1 從調(diào)試版中提取調(diào)試符號(hào) 268
9.2.2 直接使用調(diào)試版作為符號(hào)源 269
第 10章 調(diào)試高級(jí)話題 272
10.1 斷點(diǎn)的秘密 272
10.2 你好,燙 275
10.3 與Windows調(diào)試相關(guān)的API 278
10.3.1 輸出窗口輸出信息 279
10.3.2 檢測(cè)是否在調(diào)試器運(yùn)行 279
10.3.3 Windows調(diào)試API列表 280
10.4 與Linux調(diào)試相關(guān)的系統(tǒng)調(diào)用 281
10.5 使用gdb為軟件制作補(bǔ)丁 281
10.5.1 為有源碼軟件制作軟件補(bǔ)丁 282
10.5.2 為無(wú)源碼軟件制作軟件補(bǔ)丁 285
10.6 使用gdb“破解”軟件密碼 287
第 11章 調(diào)試擴(kuò)展知識(shí) 292
11.1 Windows驅(qū)動(dòng)開(kāi)發(fā)調(diào)試入門 292
11.1.1 環(huán)境準(zhǔn)備 292
11.1.2 創(chuàng)建Helloworld驅(qū)動(dòng)項(xiàng)目 293
11.1.3 編譯、構(gòu)建驅(qū)動(dòng) 294
11.1.4 部署驅(qū)動(dòng) 294
11.1.5 安裝驅(qū)動(dòng)程序 298
11.1.6 調(diào)試驅(qū)動(dòng) 299
11.2 WinDbg簡(jiǎn)介 300
11.2.1 直接啟動(dòng)應(yīng)用程序進(jìn)行調(diào)試 300
11.2.2 附加到進(jìn)程 301
11.2.3 調(diào)試轉(zhuǎn)儲(chǔ)文件 303
11.2.4 WinDbg命令列表 303
11.3 Linux內(nèi)核驅(qū)動(dòng)開(kāi)發(fā)簡(jiǎn)介 306
11.3.1 環(huán)境準(zhǔn)備 306
11.3.2 開(kāi)發(fā)Helloworld 307
11.3.3 加載和卸載驅(qū)動(dòng) 308
11.4 Linux內(nèi)核轉(zhuǎn)儲(chǔ)文件調(diào)試分析 310
11.4.1 Ubuntu系統(tǒng) 310
11.4.2 在CentOS系統(tǒng)中配置內(nèi)核轉(zhuǎn)儲(chǔ) 312
11.4.3 分析內(nèi)核轉(zhuǎn)儲(chǔ)文件 314
11.5 Visual Studio 2022調(diào)試新特性介紹 316
11.5.1 臨時(shí)斷點(diǎn) 316
11.5.2 斷點(diǎn)行為控制 318
11.5.3 依賴斷點(diǎn) 319
11.5.4 強(qiáng)制運(yùn)行到光標(biāo)處 321
11.5.5 強(qiáng)制運(yùn)行到單擊處 321
11.5.6 附加到進(jìn)程 321
C/C++代碼調(diào)試的藝術(shù)(第2版) 作者簡(jiǎn)介
張海洋,云塢科技聯(lián)合創(chuàng)立人,清華大學(xué)計(jì)算機(jī)專業(yè)畢業(yè),從事軟件開(kāi)發(fā)近20年,曾在外企工作10余年,長(zhǎng)期工作在開(kāi)發(fā)一線,已經(jīng)申請(qǐng)軟件發(fā)明專利10余項(xiàng)。精通C/C++、Python等編程語(yǔ)言,在Windows驅(qū)動(dòng)、Linux驅(qū)動(dòng)、Windows/Linux系統(tǒng)開(kāi)發(fā)和調(diào)試方面具有豐富的經(jīng)驗(yàn)。
- >
小考拉的故事-套裝共3冊(cè)
- >
隨園食單
- >
我從未如此眷戀人間
- >
名家?guī)阕x魯迅:朝花夕拾
- >
【精裝繪本】畫給孩子的中國(guó)神話
- >
二體千字文
- >
龍榆生:詞曲概論/大家小書
- >
詩(shī)經(jīng)-先民的歌唱