*完成訂單後正常情形下約兩周可抵台。 *本賣場提供之資訊僅供參考,以到貨標的為正確資訊。 印行年月:202401*若逾兩年請先於私訊洽詢存貨情況,謝謝。 台灣(台北市)在地出版社,每筆交易均開具統一發票,祝您中獎最高1000萬元。 書名:高效C/C++調試 ISBN:9787302649717 出版社:清華大學 著編譯者:嚴琦 盧憲廷 頁數:316 所在地:中國大陸 *此為代購商品 書號:1598359 可大量預訂,請先連絡。 內容簡介 本書是關於軟體調試技術的深度探索,融合了作者的實踐智慧。書中不僅指導讀者如何使用專業的調試工具,還介紹了如何宏觀和微觀地分析問題,並最大限度地發揮調試器功能。此外,書中還深入解讀了調試背後的技術原理,如調試符號、內存管理及系統內核對內存的操作機制,以揭示內存管理的關鍵性和複雜性。 除了介紹基礎概念外,本書還涵蓋了許多增強調試能力的工具與插件。儘管焦點集中在C/C++,但其中的策略與技巧具有普適性,適用於多種編程語境。內容包括從內存泄漏預防調試、Linux下的eBPF和strace調試方法,到Kubernetes容器調試,再到C++20的協程與崩潰信息收集策略。 本書主要面向具有C/C++編程基礎的讀者,同時也非常適合對軟體技術原理有深入探索興趣的讀者以及追求高效調試技巧的開發人員。作者簡介 嚴琦,畢業於中國科技大學和美國倫斯勒理工學院。曾先後在五家軟體技術公司從事計算機編程工作,從初級程序員成長為一個中等規模的軟體公司的首席架構師,涉及嵌入式系統、有限元分析、計算機輔助設計、商業智能系統等領域,專研微處理器、編譯器、伺服器系統內核等技術。有多項開源項目在實際應用中受到一致的肯定,在工作中申請並獲批軟體專利一項,並有另一項專利在審批中。目錄 第1章 調試符號和調試器1 1 調試符號 1 1 1 調試符號概覽 1 1 2 DWARF格式 1 2 實戰故事1:數據類型的不一致 1 3 調試器的內部結構 1 3 1 用戶界面 1 3 2 符號管理模塊 1 3 3 目標管理模塊 1 4 技巧和注意事項 1 4 1 特殊的調試符號 1 4 2 改變執行及其副作用 1 4 3 符號匹配的自動化 1 4 4 後期分析 1 4 5 內存保護 1 4 6 斷點不工作 1 5 本章小結 第2章 堆數據結構 2 1 理解內存管理器 2 1 1 ptmalloc 2 1 2 TCMalloc 2 1 3 多個堆 2 2 利用堆元數據 2 3 本章小結 第3章 內存損壞 3 1 內存是怎麼損壞的 3 1 1 內存溢出與下溢 3 1 2 訪問釋放的內存 3 1 3 使用未初始化的值 3 2 調試內存損壞 3 2 1 初始調查 3 2 2 內存調試工具 3 2 3 堆與棧內存損壞對比 3 2 4 工具箱 3 3 實戰故事2:神秘的位元組序轉換 3 3 1 癥狀 3 3 2 分析和調試 3 3 3 錯誤和有價值的點 3 4 實戰故事3:覆寫棧變數 3 4 1 癥狀 3 4 2 分析和調試 3 5 本章小結 第4章 C++對象布局 4 1 對齊和大小端 4 1 1 對齊 4 1 2 大小端 4 2 C++對象布局 4 3 實戰故事4:訪問已經釋放的數據 4 3 1 癥狀 4 3 2 分析和調試 4 4 搜索引用樹 4 5 本章小結 第5章 優化后的二進位 5 1 調試版和發行版的區別 5 2 調試優化代碼的挑戰 5 3 彙編代碼介紹 5 3 1 寄存器 5 3 2 指令集 5 3 3 程序彙編的結構 5 3 4 函數調用習慣 5 4 分析優化后的代碼 5 5 調試優化后的代碼示例 5 6 本章小結 第6章 進程鏡像 6 1 二進位文件格式 6 2 運行期載入和鏈接 6 3 進程映射表 6 3 1 可執行文件 6 3 2 共享庫 6 3 3 線程棧 6 3 4 無名區域 6 3 5 攔截 6 3 6 鏈接時替換 6 3 7 預先載入代理函數 6 3 8 修改導入和導出表 6 3 9 對目標函數進行手術改變 6 3 10 核心轉儲文件格式 6 3 11 核心轉儲文件分析工具 6 4 本章小結 第7章 調試多線程程序 7 1 競爭條件 7 2 它是競爭條件嗎 7 3 調試競爭條件 7 4 實戰故事5:記錄重要區域 7 4 1 癥狀 7 4 2 分析調試 7 5 死鎖 7 6 本章小結 第8章 更多調試方法 8 1 重現錯誤 8 1 1 歸因 8 1 2 收集環境信息 8 1 3 重建環境 8 2 防止未來的bug 8 2 1 知識保留和傳遞 8 2 2 增強提前檢查 8 2 3 編寫更好調試的代碼 8 3 不要忘記這些調試規則 8 3 1 分治法 8 3 2 退一步,獲取新的觀點 8 3 3 保留調試歷史 8 4 逆向調試 8 4 1 rr:Record and Replay 8 4 2 rr注意事項 8 5 本章小結 第9章 拓展調試器能力 9 1 使用Python拓展GDB 9 1 1 美化輸出 9 1 2 編寫自己的美觀列印器 9 1 3 將重複的工作變成一個命令 9 1 4 更快地調試bug 9 1 5 使用Python設置斷點 9 1 6 通過命令行來啟動程序和設置斷點 9 2 GDB自定義命令 9 3 本章小結 第10章 內存調試工具 10 1 ptmalloc』s MALLOC_CHECK_ 10 2 Google Address Sanitizer 10 3 AccuTrak 10 4 有效地調試內存損壞 10 5 實戰故事6:內存管理器的崩潰問題 10 5 1 癥狀 10 5 2 分析和調試 10 6 本章小結 第11章 Core Analyzer 11 1 使用示例 11 2 主要功能 11 2 1 搜索引用的對象(水平搜索) 11 2 2 查詢地址及其底層對象(垂直搜索) 11 2 3 內存模式分析 11 2 4 查詢堆內存塊 11 2 5 堆遍歷(檢查整個堆以發現損壞並獲取內存使用統計) 11 3 本章小結 第12章 更多調試工具 12 1 strace 12 1 1 常用功能 12 1 2 常用附加選項 12 2 實戰故事7:殭屍進程 12 2 1 遇到難題 12 2 2 揭示bug的真相 12 3 Perf 12 4 eBPF 12 4 1 準備環境 12 4 2 編寫代碼 12 4 3 編譯程序 12 4 4 載入和運行程序 12 5 實戰故事8:鏈接問題 12 5 1 切入 12 5 2 更奇怪的事情 12 5 3 柳暗花明 12 5 4 補充 12 5 5 結論 12 6 實戰故事9:臨時變數的生命周期 12 7 本章小結 第13章 崩潰發送機制 13 1 客戶端 13 2 遠程報告收集伺服器 13 3 終端集成器 13 4 本章小結 第14章 內存泄漏 14 1 為什麼RAII是基石 14 2 分析 14 3 調試內存泄漏 14 4 本章小結 第15章 協程 15 1 C++協程 15 2 協程的切分點 15 3 協程之諾 15 4 本章小結 第16章 遠程 詳細資料或其他書籍請至台灣高等教育出版社查詢,查後請於PChome商店街私訊告知ISBN或書號,我們即儘速上架。 |