搜索
高级检索
高级搜索
书       名 :
著       者 :
出  版  社 :
I  S  B  N:
文献来源:
出版时间 :
.NET Core 2.0 应用程序高级调试:完全掌握Linux、macOS和 Windows跨平台调试技术
0.00     定价 ¥ 59.00
图书来源: 浙江图书馆(由JD配书)
此书还可采购24本,持证读者免费借回家
  • 配送范围:
    浙江省内
  • ISBN:
    9787302505334
  • 作      者:
    李争
  • 出 版 社 :
    清华大学出版社
  • 出版日期:
    2018-09-01
收藏
产品特色
编辑推荐
  本书系统论述了.NET Core 的相关概念、编译方法、命令行工具使用方法、调试环境搭建,调试器基本使用方法、.NET Core 调试扩展基本使用方法、.NET Core 多线程应用程序调试、以及.NET Core 内存管理垃圾收集器等相关知识。全书论述了如下主题:
  .NET Core 你需要知道的;
  .NET Core 的编译;
  .NET Core 命令行工具;
  调试环境的配置;
  调试器的基本命令;
  .NET 基本调试命令;
  多线程调试;
  async 和await;
  内存和垃圾收集。

展开
作者简介

李争  微软(中国)有限公司开发者体验与平台合作事业部资深技术顾问。专注于微软公有云平台Azure的解决方案和架构设计、Azure应用的实施,以及Azure上的开源技术等工作。曾在微软企业服务部作为原厂技术支持工程师工作多年,承担企业开发者代码调试和技术支持、Web应用前端后端代码调优,以及IIS 的问题诊断、调优、培训等工作。具有丰富的企业客户临场解决严重系统问题的经验。拥有四十多门微软认证证书,涵盖了几乎全部微软开发相关技术,同时也是一位具有十多年授课经验的微软认证讲师(MCT)。 著有《微软互联网信息服务(IIS)实践》《微软开源跨平台移动开发实践》畅销图书。

展开
内容介绍

随着.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 跨平台调试技术。

展开
精彩书摘
  第3章
  .NET Core命令行工具
  第3章.NET Core命令行工具
  .NET Core命令行工具简称.NET Core CLI,是开发人员与.NET Core交互的唯一用户界面。开发人员通过.NET Core CLI可以创建、恢复和发布.NET Core应用程序。本章将介绍.NET Core CLI的详细用法。
  3.1.NET Core CLI的安装
  .NET Core CLI是一个独立的开源项目,可以独立安装。在一些特殊的情况下,需要单独部署和更新.NET Core CLI的版本。更多时候.NET Core CLI是随.NET Core SDK一起安装的。.NET Core SDK下载地址: https: //www.microsoft.com/net/download/all。
  3.2创建.NET Core项目
  在正式开发.NET Core应用之前,需要首先创建一个.NET Core的项目。使用.NET Core CLI可以创建已经支持的各种类型.NET Core应用程序。
  dotnet new命令用来创建.NET Core的项目相关文件,例如用来描述项目的csproj文件,项目模板中自带的一些页面和代码文件等。dotnet new的参数如命令3.1所示。
  dotnet new
  [-o|--output] [-all|--show-all] [-h|--help]
  [Template options] [--force] [--type] [-i|--install]
  [-u|--uninstall]
  dotnet new
  dotnet new [-all|--show-all]
  dotnet new [-h|--help]
  命令3.1dotnet new
  其中TEMPLATE参数用来指明创建新.NET项目的项目模板。目前,.NET Core支持的项目模板主要类型如表3.1所示。
  表3.1dot new项目模板明细表
  项 目 模 板项 目 类 型
  支 持 语 言
  console
  创建一个.NET Core控制台应用项目
  C# VB.NET F#
  classlib
  .NET Core类库项目
  C# VB.NET F#
  mstest
  创建一个mstest框架为基础的单元测试项目
  C# VB.NET F#
  xunit
  创建一个XUnit开源测试框架为基础的单元测试项目
  C# VB.NET F#
  web
  创建一个空的ASP.NET Core Web项目
  C#
  mvc
  创建一个ASP.NET Core MVC Web项目
  C# F#
  razor
  创建一个支持Razor页面的ASP.NET Core MVC项目
  C#
  webapi
  创建一个ASP.Net Core WebAPI项目
  C#
  nugetconfig
  创建一个用于制作NuGet包的配置文件
  sln
  创建一个与Visual Studio兼容的sln解决方案文件
  page
  创建一个仅支持Razor视图的ASP.NET Core项目
  viewimports
  创建一个ASP.NET Core MVC使用的视图模板_ViewImports.cshtml文件
  viewstart
  创建一个ASP.NET Core StartMVC使用的视图模板_ViewStart.cshtml文件
  参数lang或language用于指定项目所使用的编程语言。目前.NET Core的一些项目模板可以指定C#、VB.NET或者F#作为编程语言,其他的编程语言暂不支持。在Linux和macOS上,有一个常识: 参数通常分为长参数(以开头)和短参数(以),lang作为language的缩写是以为开头的,而language把参数名写全了,因此使用作为开头。
  参数n或name用来指定项目的名称,如果不指定项目名称,那么dotnet new将会使用当前所在目录的目录名称作为项目的名称。
  参数o或output用来指定dotnet new生成的项目文件的输出目录。在指定这个参数后,dotnet new会在当前目录中创建一个指定名字的子目录,并将生成的项目文件放入子目录中。
  参数all或showall用来显示dotnet new所支持的项目模板信息。
  参数l或list用来显示dotnet new的全部参数帮助信息和支持的项目模板信息。
  参数h或help用来显示dotnet new的全部参数帮助信息,支持的项目模板信息和使用样例。
  参数force让dotnet new生成的全新项目文件覆盖现有项目文件。
  参数type过滤显示dotnet new支持的项目模板。type默认支持的类型有project、item和other。例如,可以使用dotnet new type item来显示dotnet new支持创建的单个文件类型,例如sln、viewimport和viewstart类型。
  参数i或install用来安装自定义项目模板。自定义项目模板格式与Visual Studio支持的自定义项目模板相同,都是一个zip文件。
  参数u或uninstall用来卸载已安装的自定义项目模板。
  3.3.NET Core项目的迁移
  对于早期版本的如.Net Core 1.0或者1.1版本的应用程序,dotnet命令行工具提供了dotnet migrate命令来帮助开发者从低版本的项目文件迁移到高版本的项目文件。
  dotnet migrate迁移命令的语法如命令3.2所示。
  dotnet migrate [] [-t|--template-file]
  [-v|--sdk-package-version] [-x|--xproj-file]
  [-s|--skip-project-references] [-r|--report-file]
  [--format-report-file-json] [--skip-backup] [-h|--help]
  命令3.2dotnet migrate
  dotnet migrate既支持根据解决方案文件sln以递归的形式迁移整个解决方案的所有项目,也可以通过指定一个单独的项目路径来迁移单个.Net Core项目。从目前的具体情况来看,dotnet migrate的主要作用是根据指定的sln文件或者JSON格式的.NET 1.x项目的project.json文件内容分析项目之间的引用关系,并把JSON格式的项目内容翻译成MSBuild支持的XML格式的csproj文件,最后把旧的project.json格式的项目文件删除。
  参数t或templatefile用来显式地指定一个MSBuild模板,让要转化的项目以这种项目模板作为目标进行转化。.NET Core 2.0支持的项目模板可参考dotnet new命令一节中支持的项目模板列表。
  参数v或sdkpackageversion用来指定项目迁移后将基于哪个.NET Core版本。默认情况下,dotnet migrate进行迁移操作是不会修改项目依赖的.NET Core版本的。对于一个.NET Core 1.x的项目,如果不指定这个参数,那么项目迁移之后仅仅是把project.json文件转化为MSBuild格式的csproj文件,但是并不会强制升级项目所依赖的.NET Core版本。如果想把一个.NET Core 1.x项目升级到.NET Core 2.0,那么需要通过v或者sdkpackageversion参数指定.NET Core版本,如命令3.3所示。
  dotnet migrate -v netcoreapp2.0
  命令3.3dotnet项目迁移到2.0
  参数x或xprojfile用来指定xproj文件的位置。
  如果当前文件夹内不止一个xproj文件,则必须指定该参数。
  xproj文件是.NET Core 1.x中用来描述构建配置的文件。由于.NET Core 1.x期望获得Visual Sudio和Xamarin Studio(现在已经更名为Visual Studio for Mac)等集成开发环境之间构建的兼容性,因此发明了xproj文件。这个文件以XML格式的形式描述了构建一个.NET Core 1.x项目的基本参数。由于是.NET Core 1.x定义的xproj,因此被所有支持.NET Core 1.x开发的集成开发环境所支持。在.NET Core 2.0时代,项目文件将重新回归csproj或vbproj等项目文件类型,构建参数包含于csproj等项目文件中。通常情况下,project.json文件和xproj文件共存于同一个目录下,dotnet migrate可以自动定位xproj文件的位置。在一些特殊情况下,就需要通过x或xprojfile来指定待转换项目的xproj文件的路径。
  参数s或skipprojectreferences,用来告诉dotnet migrate在进行项目迁移时,仅迁移当前项目,而不对其引用的项目进行迁移。而在默认情况下,dotnet migrate会根据project.json文件中描述的项目引用关系,递归式地将全部相关项目进行迁移。
  参数r或reportfile用来指定迁移过程中产生的迁移报告的保存路径。如果不指定这个参数,就不会产生迁移报告。
  参数formatreportfilejson将迁移报告转化成json格式文件进行输出。
  参数skipbackup在指定dotnet migrate操作时不对待迁移项目进行备份,直接执行迁移操作并删除project.json文件。在默认情况下,即不指定该参数时,dotnet migrate需要先备份整个项目再执行迁移操作。
  3.4.NET Core项目的构建
  .NET Core 2.0项目的构建主要依赖于MSBuild实现。通过MSBuild读取项目文件中的构建配置,调用编译器、脚本等完成一系列的构建动作。通过项目构建,可以获得用于执行的二进制输出结果。
  dotnet build命令用来构建指定的项目和指定项目的依赖项目。通过构建,得到.NET Core的二进制可执行输出。dotnet build命令语法如命令3.4所示。
  dotnet build [] [-o|--output] [-f|--framework]
  [-c|--configuration] [-r|--runtime] [--version-suffix]
  [--no-incremental] [--no-dependencies] [-v|--verbosity]
  [-h|--help]
  命令3.4dotnet build
  如果要编译的项目不在当前目录,那么可以通过dotnet build项目所在目录的方式进行编译,即使用参数。如果没有指定项目目录,就编译当前目录下的项目。
  参数o或output用来指定构建结果的输出目录。项目经过构建而生成的最终二进制可执行内容将被保存在指定目录下。
  参数f或framework用来指定未来的编译结果要运行在哪一个.NET Framework版本上。并且,这个Framework版本已经在该项目文件中指定了。这也很好理解,不能指望一个为.NET Core 2.0编写的项目可以运行在.NET Framework 2.0版本上,因此目标框架必须在项目文件中已经声明过。Framework通常按简短的目标框架名字对象(Target Framework Moniker,TFM)来表示。在给定framework参数时,使用TFM名称即可,详见表3.2所示。
  表3.2简短目标框架与.NET版本对照表
  名称缩写TFM
  .NET Standard
  netstandard
  netstandard1.0
  netstandard1.1
  netstandard1.2
  netstandard1.3
  netstandard1.4
  netstandard1.5
  netstandard1.6
  netstandard2.0
  .NET Core
  netcoreapp
  netcoreapp1.0
  netcoreapp1.1
  .NET Framework
  net
  net11
  net20
  ……
展开
目录
丛书序Ⅰ
推荐序Ⅲ
前言Ⅴ
赞誉Ⅸ
第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.4Finalizer队列
9.2内存泄漏调试
9.2.1如何诊断内存泄漏
9.2.2Linux的内存泄漏调试
9.2.3Windows下的内存泄漏调试
9.3Finalizer队列调试
后记
展开
加入书架成功!
收藏图书成功!
我知道了(3)
发表书评
读者登录

请选择您读者所在的图书馆

选择图书馆
浙江图书馆
点击获取验证码
登录
没有读者证?在线办证