.NET Core 2.0 應用程序高級調試——完全掌握Linux、macOS和 Win ( 簡體 字) |
作者:李爭 | 類別:1. -> 程式設計 -> .NET |
譯者: |
出版社:清華大學出版社 | 3dWoo書號: 49904 詢問書籍請說出此書號!【有庫存】 NT售價: 295 元 |
出版日:9/1/2018 |
頁數:165 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787302505334 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言:不知不覺,.NET Core 已經開源三年多了。在這三年多的時間里,我作為一個親歷者,經歷了.NET Core 從1.0 到2.0 的涅槃。這幾年,也是我個人轉型為一名微軟技術布道師(Evangelist) 的重要時期。 作為一名24年前第一次接觸計算機就使用微軟產品的我來說,微軟這三年帶來的變化對我的影響真是太大了!開源和云計算除了讓微軟的股價翻了兩番以外,也讓我走上了學習和了解開源世界的道路。開源為我打開了世界的另一扇門,讓我了解到傳統企業軟件以外的廣闊世界。開源真的徹底改變了我的思維。以前,寫一個客戶端應用,我會直接打開Visual Studio;現在,我會考慮清楚用哪種技術才能同時支持Windows、Linux 和macOS三個操作系統平臺,再去動手開發。你能想象嗎?這本書的全部內容就是我在一臺蘋果筆記本上創作的,書稿的版本管理是通過Git 和Visual Studio Online 來實現的。 當然,作為一名Windows 平臺的開發者,向開源世界轉型也并不是輕松的。為此,我專門買了一臺Macbook Pro。在工作和業余時間強迫自己去適應它,去熟悉開源世界的那些常用工具,在開發過程中體會Visual Studio Code 的輕便快捷。在這個過程中也積累了一些經驗,我的這本書就是我在開源世界工作經驗的一部分總結。 .NET Core 作為.NET Framework 的一個開源世界的變體,與.NET Framework 既有千絲萬縷的聯系,又有很大的區別。一方面.NET Core 的大部分代碼都來自.NET Framework,另一方面.NET Core 還要處理好.NET Framework 不曾面對的跨平臺、自包含等新問題的挑戰。在使用.NET Core 開發的過程中,我發現有很多的待解決問題。于是,我決定用我的這本書將它們總結出來分享給廣大.NET 開發者,讓他們在使用.NET Core 開發應用程序時少走一些彎路。 這本書集成了我在微軟作為開發方向原廠支持工程師(PFE) 時的應用程序調試和調優的經驗,同時也融合了我在Linux 平臺上的使用經驗。通過本書,我將向大家介紹如何在Linux 的各個發行版本以及Windows 上利用調試器對.NET Core 應用程序進行調試的技術和技巧。因為.NET Core 要想在生產環境上大規模地使用,必須有強大的應用程序調試技術作為保證,以便快速定位問題和解決問題。 通過長達一年時間的寫作和對.NET Core 問題狀態的追蹤和分析,現在我真的認為是時候把應用程序遷移到.NET Core 上了!
本書包含哪些內容 本書系統論述了.NET Core 的相關概念、編譯方法、命令行工具使用方法、調試環境搭建、調試器基本使用方法、.NET Core 調試擴展基本使用方法、.NET Core 多線程應用程序調試,以及.NET Core 內存管理垃圾收集器等相關知識。本書全面詳盡地闡述了.NET Core源代碼獲取、編譯、調試的全方位技術,你需要知道的.NET Core技術、.NET Core的編譯、.NET Core 命令行工具的使用、調試環境的配置、調試器的基本命令、.NET 調試基本命令、多線程、async 和await、內存和垃圾收集等內容。 如何高效地閱讀本書 本書從讀者角度出發,章節由淺入深,從.NET Core 常見問題講起,直到最后綜合運用各種工具對.NET Core應用程序高級排錯。因此,建議讀者從頭至尾順序閱讀。如果讀者具有豐富的Linux 使用經驗,也可以忽略其中一些簡單的章節。 本書適合哪些讀者 本書適合使用.NET Core 技術進行應用程序開發的相關開發人員,也適合于希望深入了解和學習.NET Core平臺的讀者。 致謝 首先,我要感謝我的家人和我可愛的女兒。因為我在寫書稿時嚴重占用了和她們在一起休閑的時間。其次,要感謝我敬愛的老板崔宏禹老師,以及認真負責的責任編輯盛東亮,這是我們合作的第三本書了。最后我還要感謝我心里愛著的那個人,你是我創作的原動力。 由于作者水平有限,.NET Core 跨平臺相關知識涉及廣泛,書中難免存在疏漏和不妥之處,敬請廣大讀者批評指正。 書中樣例代碼 為了詳盡描述調試的整個過程,突出一些要調試的現象,書中涉及了許多.NET Core 代碼工程。這些代碼都是使用Visual Studio Code 針對.NET Core 2.0 進行編寫 以上源代碼都可以在.NET Core 2.0環境的支持下,運行在Windows、Linux和macOS 操作系統上。 書中特殊約定 為了直觀,書中與操作系統相關的命令都通過操作系統對應的商標來標識,代表這些命令在對應的操作系統下測試通過。因Linux發行版本眾多,不同發行版本的Linux部分命令可能略有差異。因作者精力有限,僅能覆蓋CentOS/Red Hat 和Debian/Ubuntu 等最流行的兩組發行版本,望讀者見諒。 (1) 代表Debian 8.0或者Ubuntu 操作系統; (2) 代表CentOS 7.0 或者Red Hat 操作系統; (3) 代表Windows 8.1、10、Server 2008/2012/2016系列操作系統; (4) 代表 macOS Sierra系列操作系統。 在書中配有大量的Shell命令、C#代碼和調試器指令以及為了說明調試輸出的圖片。書中的命令是指用戶與操作系統Shell之間交互時輸入的命令; 代碼是指經過編譯,可以運行在.NET Core 2.0上的C#語言源代碼; 調試是指調試者與Windbg或者LLDB調試器之間交互時輸入的調試指令。請讀者在閱讀時加以區分。 編著者 2018年8月 |
內容簡介:隨著.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章.NETCore基礎知識 1.1.NETCore到底是什么 1.1.1從軟件許可協議說開源 1.1.2構成.NETCore的重要組件 1.2.NETStandard又是什么 1.3.NETCore的一些重要工具 1.4常見問題解答 第2章.NETCore的編譯 2.1.NETCore源代碼在Linux操作系統上的編譯 2.1.1獲取.NETCore源代碼 2.1.2安裝編譯源代碼必要的工具 2.1.3在CentOS上手工編譯LLVM、Clang和LLDB 2.1.4在Linux上編譯.NETCore源代碼 2.2.NETCore源代碼在Windows操作系統上的編譯 2.2.1下載和安裝VisualStudio 2.2.2安裝其他必備軟件 2.2.3在Windows系統上執行.NETCore編譯 2.3.NETCore源代碼在macOS操作系統上的編譯 第3章.NETCore命令行工具 3.1.NETCoreCLI的安裝 3.2創建.NETCore項目 3.3.NETCore項目的遷移 3.4.NETCore項目的構建 3.5.NETCore項目的發布 3.6對.NETCore項目進行管理 3.6.1dotnetsln命令介紹 3.6.2項目之間的引用管理 3.6.3項目的包管理 3.6.4項目引用NuGet包的恢復 3.7.NETCore應用的執行 3.8將.NETCore項目發布成NuGet包 3.8.1dotnetpack命令介紹 3.8.2dotnetnugetpush命令介紹 3.8.3dotnetnugetlocals命令介紹 3.8.4dotnetnugetdelete命令介紹 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.NETCore多線程同步對象 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在VisualStudio2017上調試異步方法 第9章內存和垃圾收集 9.1.NETCore內存管理工作原理 9.1.1從一行簡單的代碼看內存申請 9.1.2.NETCore內存管理概覽 9.1.3托管堆內存的分代管理 9.1.4Finalizer隊列 9.2內存泄漏調試 9.2.1如何診斷內存泄漏 9.2.2Linux的內存泄漏調試 9.2.3Windows下的內存泄漏調試 9.3Finalizer隊列調試 后記 |
序: |