.NET Core 2.0 應用程序高級調試——完全掌握 Linux、macOS 和 Windows 跨平臺調試技術
內容描述
隨著.NET Core 開源和跨平臺的特性逐漸被廣大開發者熟知和接受,有越來越多的.NET 應用從Windows 平臺向Linux 平臺進行遷移,有越來越多的開發者在Linux 或者macOS 操作系統上開發.NET 應用。同時,這也給之前只熟悉在Windows 平臺上開發.NET 應用的開發者帶來了一系列挑戰。怎樣在Linux 和macOS操作系統上有效地使用工具對.NET Core 應用程序進行調試,找出程序中隱藏的代碼錯誤和內存中的問題成為保障應用程序在Linux 和macOS 上平穩運行的重要課題。本書從.NET Core概念、.NET Core 相關工具、調試器選擇、調試命令介紹和多線程、內存調試實踐等多個環節對.NET Core在Linux、macOS和Windows 三個操作系統上如何進行調試做了詳盡的介紹。內容包括.NET Core基礎知識、.NET Core 的編譯、.NET Core 命令行工具、調試環境的配置、調試器的基本命令、.NET 基本調試命令、多線程、async和await、內存和垃圾收集等,分9章全面地闡述了.NET Core 跨平臺調試技術。
海報:
目錄大綱
第1章.NET Core基礎知識
1.1.NET Core到底是什麼
1.1.1從軟件許可協議說開源
1.1.2構成.NET Core的重要組件
1.2.NET Standard又是什麼
1.3.NET Core的一些重要工具
1.4常見問題解答
第2章.NET Core的編譯
2.1.NET Core源代碼在Linux操作系統上的編譯
2.1.1獲取.NET Core源代碼
2.1.2安裝編譯源代碼必要的工具
2.1.3在CentOS上手工編譯LLVM、Clang和LLDB
2.1.4在Linux上編譯.NET Core源代碼
2.2.NET Core源代碼在Windows操作系統上的編譯
2.2.1下載和安裝Visual Studio
2.2.2安裝其他必備軟件
2.2.3在Windows系統上執行.NET Core編譯
2.3.NET Core源代碼在macOS操作系統上的編譯
第3章.NET Core命令行工具
3.1.NET Core CLI的安裝
3.2創建.NET Core項目
3.3.NET Core項目的遷移
3.4.NET Core項目的構建
3.5.NET Core項目的發布
3.6對.NET Core項目進行管理
3.6.1dotnet sln命令介紹
3.6.2項目之間的引用管理
3.6.3項目的包管理
3.6.4項目引用NuGet包的恢復
3.7.NET Core應用的執行
3.8將.NET Core項目發布成NuGet包
3.8.1dotnet pack命令介紹
3.8.2dotnet nuget push命令介紹
3.8.3dotnet nuget locals命令介紹
3.8.4dotnet nuget delete命令介紹
3.9dotnet相關命令的使用
3.9.1創建解決方案和項目
3.9.2設置項目的引用
3.9.3添加測試工程
第4章調試環境的配置
4.1調試環境設置概述
4.2Linux操作系統調試環境設置
4.2.1在Linux上設置ulimit
4.2.2在Linux操作系統上部署調試器
4.2.3在Linux操作系統上抓取內存轉儲文件
4.3在macOS操作系統上部署調試器
4.4在Windows操作系統上部署調試器
4.4.1Windows上安裝Windbg
4.4.2在Windows上抓取內存轉儲
第5章調試器的基本命令
5.1使用LLDB進行調試
5.1.1LLDB調試器簡介
5.1.2命令行參數
5.1.3一段用於演示的代碼
5.1.4LLDB的啟動和退出
5.1.5設置斷點
5.1.6單步調試指令
5.1.7查看調用堆棧
5.1.8線程切換
5.1.9寄存器調試指令
5.1.10查看內存數據
5.2Windbg調試器和基本指令
5.2.1Windbg簡介
5.2.2Windbg的啟動和退出
5.2.3Windbg設置斷點
5.2.4Windbg查看堆棧調用
5.2.5Windbg線程相關指令
5.2.6Windbg寄存器相關指令
5.2.7Windbg查看內存數據
第6章.NET基本調試命令
6.1.NET調試擴展概覽
6.2.NET數據結構的基本知識
6.2.1對像在內存中的形態
6.2.2MethodTable和EEClass
6.2.3MethodDesc
6.3.NET調試擴展命令
6.3.1代碼和堆棧調試命令
6.3.2CLR數據結構相關調試命令
6.3.3內存對象分析相關命令
6.4那些所謂的調試套路
第7章多線程
7.1多線程基礎
7.1.1線程的基本概念
7.1.2.NET Core多線程同步對象
7.2一個簡單的多線程程序調試
7.2.1MassiveThreads程序
7.2.2LLDB調試MassiveThreads
7.2.3Windbg調試MassiveThreads
7.2. 4MassiveThreads調試總結
7.3程序死鎖的調試
7.3.1DBDeadlockHang應用程序
7.3.2使用LLDB調試死鎖
7.3.3使用Windbg調試死鎖
7.3.4死鎖調試總結
第8章async和await
8.1基於任務的異步編程模式
8.2如何寫好一個TAP異步方法
8.2.1函數的命名和聲明
8.2.2異步方法中的代碼
8.2.3函數中的異常處理
8.2.4異步方法執行過程中的終止
8.2.5異步任務執行進度的通知
8.3async/await是什麼
8.4async/await調試
8.4.1使用LLDB在Linux上調試異步方法
8.4.2在Visual Studio 2017上調試異步方法
第9章內存和垃圾收集
9.1.NET Core內存管理工作原理
9.1.1從一行簡單的代碼看內存申請
9.1.2.NET Core內存管理概覽
9.1.3託管堆內存的分代管理
9.1.Finalizer隊列
9.2內存洩漏調試
9.2.1如何診斷內存洩漏
9.2.2Linux的內存洩漏調試
9.2.3Windows下的內存洩漏調試
9.3Finalizer隊列調試
後記
作者介紹
李爭
微軟(中國)有限公司開發者體驗與平台協作事業部資深技術顧問。專注於微軟公有云平台Azure的解決方案和架構設計、Azure應用的實施,以及Azure上的開源技術等工作。曾在微軟企業服務部作為原廠技術支持工程師工作多年,承擔企業開發者代碼調試和技術支持、Web應用前端后端代碼調優,以及IIS的問題診斷、調優、培訓等工作。具有豐富的企業客戶臨場解決嚴重系統問題的經驗。擁有四十多門微軟認證證書,涵蓋了幾乎全部微軟開發相關技術,同時也是一位具有十多年授課經驗的微軟認證講師(MCT)。著有《微軟開源跨平台移動開發實踐》熱銷圖書。