概要

研究Abp(ASP.NET Boilerplate)框架有几个月了,从一遍遍的看官方文档,到现在看源码,一路走来学习了很多知识。 很多新手都很关心源码如何调试,我也是如此,在反复看Debugging文档后还是无法调试!经过反复研究学习,终于可以调试了,先看一下下面截图效果,下面我来按步骤来介绍如何调试abp源码:

Sourcelink or Symbol file(.pdb)

官网上文档介绍abp是支持SourceLink,但是按照官网配置是无法调试的,希望作者在下个版本中修复。

程序数据库(.pdb)文件也叫Symbol file(符号文件)也可以用来调试,但不幸的是作者abp v2.1.3(包含) 之前发布的nuget 包中并未包含.pdb文件,可以查看Issuses #2133, v2.1.3版本之后作者应该会修复这个问题。

Symbol file(.pdb)如何调试

第一步 准备工作

首先说明准备工作,我所用的abp源码是v2.1.3,可以从github上获取,我使用的项目是官网提供的Event Cloud例子,也可以从github上获取,需要注意两者的abp版本号一致。

第二步 调试配置

打开Debug -- Options

取消"Enable Just My Code",勾选"Enable source server support"和“Enbale source link support”,实际不需要勾选这么多,暂且先勾上吧。

点击Symbols选项,点击“Sepcify modules”,增加abp*.dll模块,这样明确指定模块可以增加加载速度。

第三步 准备Symbol文件

我的abp v2.1.3的源码路径为"D:\aspnetboilerplate",在cmd命令中执行powershell.exe -file "D:\aspnetboilerplate\nupkg\pack.ps1",就会编译好所有dll, 例如:

我在另一台机器上执行上面cmd命令会报错,如下截图,我也没搞清楚为什么,因为我根本不知道pack.ps1到底有啥用,哈哈,有大神可以指导下吗?所以我换了一种方式,直接打开abp工程,把模式调成Release,直接整个解决方案编译。

第四步 替换文件

从上一步编译后生成的目录中替换文件到我们项目(Event Cloud)对应的目录中,例如:"D:\aspnetboilerplate\src\Abp\bin\Release\net46\Abp.pdb"到“D:\Projects\ABP\eventcloud-master\src\packages\Abp.2.1.3\lib\net46”;

"D:\aspnetboilerplate\src\Abp.Web.Api\bin\Release\net46\Abp.Web.Api.pdb"到“D:\Projects\ABP\eventcloud-master\src\packages\Abp.Web.Api.2.1.3\lib\net46”

需要调试什么源码拷贝对应的一套文件(dll,pdb,xml)到项目的对应packages中.

第五步 开始调试

点击调试,查看Output窗口查看我们关心的abp*.dll的Symbol是不是加载成功了人,如果加载成功,我们就可以F11调试abp源码了。有小伙伴说需要通过File -- Open -- File... 打开abp中对应源码文件加断点来调试,我测试下来,不打开也可以直接调试了.

总结

abp的后续版本应该可以直接调试了,此博客只为abp老版本提供一个workround.

abp 调试的更多相关文章

  1. ABP入门系列(12)——如何升级Abp并调试源码

    ABP入门系列目录--学习Abp框架之实操演练 源码路径:Github-LearningMpaAbp 1. 升级Abp 本系列教程是基于Abp V1.0版本,现在Abp版本已经升级至V1.4.2(截至 ...

  2. ABP之调试

    虽然通常情况下不需要,但是Abp还是提供了能在调试项目中进入Abp源码的方法.. 所有的ABP NuGet包都启用了源码连接.这意味着我们可以在我们的项目中调试ABP源码,要启用它,更改Visual ...

  3. ABP大型项目实战(2) - 调试与排错 - 日志 - 查看审计日志

    这是<ABP大型项目实战>系列文章的一篇.   项目发布到生产环境后难免会有错误. 那么如何进行调试和排错呢?   我看到俱乐部里有人是直接登陆生产服务器把数据库下载到开发机器进行调试排错 ...

  4. ABP框架 - 介绍 VS2017调试器无法附加到IIS进程(w3wp.exe) c# 动态实例化一个泛型类

    ABP框架 - 介绍   在14,15年间带领几个不同的团队,交付了几个项目,在这个过程中,虽然几个项目的业务不一样,但是很多应用程序架构基础性的功能却是大同小异,例如认证.授权.请求验证.异常处理. ...

  5. Abp.Core运行时提示XX没有实现,或者没有依赖注入的问题,或者调试时提示做出更改的问题

    因为abp的web层对application层有项目引用,但是对domain层并不存在项目引用,而是bin目录下直接引用的dll文件,所以当domain层修改后不会自动将dll文件同步过去.所以有时候 ...

  6. abp vnext 调试

    在用Abp或者asp.net core 开发过程中,难免会遇到稀奇古怪的问题,需要对底层源代码进行调试,下面就教大家如何通过配置Visual Studio 2019来进行调试: 首先我们通过查看Abp ...

  7. Postman调试Abp API

    在swagger中查看登录需要用post方式访问,Abp需要用application/json方式调用 请求体 Postman调用方式 例:访问所有用户,调用Api地址为http://localhos ...

  8. RESTful 接口调试分享利器 restc

    这个工具来自于https://elemefe.github.io/restc/  这里对Abp进行了一次封装 1.在项目中添加nuget包 Abp.Web.Api.Restc 2.在项目Abp模块的D ...

  9. ABP框架理论学习之Debugging

    返回总目录 所有的官方ABP nuget包都是支持GitLink的,这意味着你可以在项目中轻松地调试所有的以Abp为前缀的Nuget包. 要开启这项支持,"启用源服务器支持"选项应 ...

随机推荐

  1. HTML、 CSS、 JavaScript三者的关系 1

    HTML. CSS. JavaScript三者的关系 网页主要由三部分组成: 结构( Structure) . 表现( Presentation) 和行为( Behavior)    HTML —— ...

  2. BZOJ3172 [Tjoi2013]单词 【AC自动机】

    3172: [Tjoi2013]单词 Time Limit: 10 Sec  Memory Limit: 512 MB Submit: 4293  Solved: 2083 [Submit][Stat ...

  3. TYVJ1423 GF和猫咪的玩具

    Description: GF同学和猫咪得到了一个特别的玩具,这个玩具由n个金属环(编号为1---n),和m条绳索组成,每条绳索连接两个不同的金属环,并且长度相同.GF左手拿起金属环L,猫咪右手(或者 ...

  4. Cydia Substrate based DexDumper's weakness

    得益于Cydia Substrate框架,HOOK Native函数变得简单,也给脱壳带来方便. 像ijiami免费版,360,classes.dex被加密到so文件并运行时释放到内存,因此针对相关函 ...

  5. 使用openssl进行文件加密

    #include <iostream> #include <string> #include <stdlib.h> using namespace std; int ...

  6. Codeforces Round #546 (Div. 2) 题解

    Codeforces Round #546 (Div. 2) 题目链接:https://codeforces.com/contest/1136 A. Nastya Is Reading a Book ...

  7. stout代码分析之六:Stopwatch

    在进行性能测试时,经常需要计算某个函数执行的时长.stout中的Stopwatch类可实现纳秒精度的计时. Stopwatch内部使用timespec记录开始和技术时间.   timeval和time ...

  8. 003.关于数组的操作 [growing]

    1.获取数组的长度 #include<iostream> using namespace std; template<class T> int length(T& ar ...

  9. php防止用户输入进行跨站攻击的方式

    1.对用户输入的内容进行转义 //1.过滤内容中html标记 $userinput=strip_tags($userinput); //2.转换成HTML实体 $userinput=htmlentit ...

  10. C11简洁之道:函数绑定

    1.  可调用对象 在C++中,有“可调用对象”这么个概念,那么什么是调用对象呢?有哪些情况?我们来看看: 函数指针: 具有operator()成员函数的类对象(仿函数): 可以被转换为函数指针的类对 ...