前几节开发Dapr应用程序时,我们使用 dapr cli 来启动dapr服务,就像这样:

dapr run --dapr-http-port 3501 --app-port 5001  --app-id frontend dotnet  .\FrontEnd\bin\Debug\net5.0\FrontEnd.dll

如果你想要通过dapr调试服务呢?在这里使用 dapr 运行时(daprd) 来帮助实现这一点。具体原理就是先从命令行中运行符合正确参数的 daprd,然后启动您的代码并附加调试器。

1.配置launch.json

vscode打开项目,并创建launch.json

修改launch.json的preLaunchTask,自定义名字,preLaunchTask将引用在 tasks.json 文件中定义的任务。

{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "Frontend-.NET Core Launch (web)","type": "coreclr","request": "launch",//"preLaunchTask": "build","preLaunchTask": "daprd-frontend","program": "${workspaceFolder}/FrontEnd/bin/Debug/net5.0/FrontEnd.dll","args": [],"cwd": "${workspaceFolder}/FrontEnd","stopAtEntry": false,"serverReadyAction": {"action": "openExternally","pattern": "\\bNow listening on:\\s+(https?://\\S+)"},"env": {"ASPNETCORE_ENVIRONMENT": "Development"},"sourceFileMap": {"/Views": "${workspaceFolder}/Views"}},{"name": ".NET Core Attach","type": "coreclr","request": "attach"}]
}

2.配置task.json

需要在task.json文件中定义一个 daprd task和问题匹配器(problem matcher)。这里有两个通过上述 preLaunchTask 成员引用。在 dpred -frontend task下,还有一个dependsOn成员,它引用build任务,以确保最新的代码正在运行/调试。用了 problemMatcher,这样当 daprd 进程启动和运行时,VSCode 就能够知道。

{"version": "2.0.0","tasks": [{"label": "build","command": "dotnet","type": "process","args": ["build","${workspaceFolder}/FrontEnd/FrontEnd.csproj","/property:GenerateFullPaths=true","/consoleloggerparameters:NoSummary"],"problemMatcher": "$msCompile"},{"label": "publish","command": "dotnet","type": "process","args": ["publish","${workspaceFolder}/FrontEnd/FrontEnd.csproj","/property:GenerateFullPaths=true","/consoleloggerparameters:NoSummary"],"problemMatcher": "$msCompile"},{"label": "watch","command": "dotnet","type": "process","args": ["watch","run","${workspaceFolder}/FrontEnd/FrontEnd.csproj","/property:GenerateFullPaths=true","/consoleloggerparameters:NoSummary"],"problemMatcher": "$msCompile"},{"label": "daprd-frontend","command": "daprd","args": ["-app-id","frontend","-app-port","5001","-dapr-http-port","3501","-placement-host-address","localhost:6050","-components-path","C:\\Users\\chesterychen\\.dapr\\components"],"isBackground": true,"problemMatcher": {"pattern": [{"regexp": ".","file": 1,"location": 2,"message": 3}],"background": {"beginsPattern": "^.*starting Dapr Runtime.*","endsPattern": "^.*waiting on port.*"}},"dependsOn": "build"},]
}

因为没有使用 dapr run* cli 命令, 所以运行 daprd list 命令将不会显示当前正在运行的应用列表。

3.调试

在StateController.GetAsync中新增断点,运行并调用http://192.168.43.94:3501/v1.0/invoke/frontend/method/State。

4.不用vscode调试

cmd运行以下命令,监听5001端口

daprd run -dapr-http-port 3501 -app-port 5001  -app-id frontend -placement-host-address localhost:6050 -components-path C:\\Users\\chesterychen\\.dapr\\components

然后直接vs运行项目,即可调试

Dapr + .NET 实战(九)本地调试相关推荐

  1. Dapr + .NET 实战(十四)虚拟机集群部署 mDNS + Consul

    前面我们说了在单机模式下和K8S集群下的Dapr实战,这次我们来看看如何在不使用K8S的情况下,在一个传统的虚拟机集群里来部署Dapr. 1.环境准备 我们准备两台centos7虚拟机 Dapr1:1 ...

  2. Dapr + .NET 实战(十三)跨语言开发

    欢迎大家参加4小时Dapr+.NET 5的实战课程 课程链接     https://ke.qq.com/course/4000292?tuin=1271860f 因为基于Dapr的服务架构是不限语言 ...

  3. Dapr + .NET 实战(十二)服务调用之GRPC

    欢迎大家参加4小时Dapr+.NET 5的实战课程 课程链接     https://ke.qq.com/course/4000292?tuin=1271860f 什么是GRPC gRPC 是一种与语 ...

  4. Dapr + .NET 实战(十-终篇)K8S运行Dapr

    工作原理 为了实现在k8s上安装Dapr,Dapr需要部署dapr-sidecar-injector.dapr-operator.dapr-placement和dapr-sentry服务. dapr- ...

  5. Dapr + .NET 实战(七)Secrets

    什么是Secrets 应用程序通常会通过使用专用的存储来存储敏感信息,如连接字符串.密钥等. 通常这需要建立一个密钥存储,如Azure Key Vault.Hashicorp等,并在那里存储应用程序级 ...

  6. build怎么调试 react_GitHub - bozhouyongqi/debug-react: 本地调试react源码环境

    [TOC] 工欲善其事,必先利其器. 在学习raect源码时,如果能够在浏览器中单步调试,势必会加深理解.其实可以借助webpack的resolve.alias将react等指向本地的目录,这样就不会 ...

  7. spark sql 本地调试_Spark精华问答|Spark的三种运行模式有何区别?

    戳蓝字"CSDN云计算"关注我们哦! Spark是一个针对超大数据集合的低延迟的集群分布式计算系统,比MapReducer快40倍左右,是hadoop的升级版本,Hadoop作为第 ...

  8. SpringBoot 实战 (九) | 整合 Mybatis

    微信公众号:一个优秀的废人 如有问题或建议,请后台留言,我会尽力解决你的问题. 前言 如题,今天介绍 SpringBoot 与 Mybatis 的整合以及 Mybatis 的使用,本文通过注解的形式实 ...

  9. spark sql 本地调试_干货 | 如何成为大数据Spark高手

    Spark是发源于美国加州大学伯克利分校AMPLab的集群计算平台,它立足于内存计算,性能超过Hadoop百倍,从多迭代批量处理出发,兼收并蓄数据仓库.流处理和图计算等多种计算范式,是罕见的全能选手. ...

  10. npm run dev 在本地调试出现跨域问题解决方法

    npm run dev 在本地调试出现跨域问题 在localhost:8080调试时会出现跨域问题,如图: 我的项目是用webpack作为前端自动化构建工具,可以在webpack-dev-server ...

最新文章

  1. 使用purge_relay_logs 清理relay log
  2. 不同分辨率下Apriltag识别精度测试
  3. SpringBoot动态生成多个Excel文件以压缩包.zip格式下载
  4. JS实现生成一个周对应日期数组
  5. 直播电商只能卖便宜货吗?
  6. Linux下使用GDB进行调试
  7. 给出如下公式的python表达式7+9i+2xcos66_这100道练习,带你玩转Numpy
  8. zabbix 服务器监控之数据库操作
  9. [Python3] 023 面向对象 第三弹
  10. f(x)的泰勒(Taylor)展开式
  11. wim linux u盘启动,在U盘启动中安装CDLinux
  12. linux操作系统adsl 上网设置,Linux操作系统上ADSL拨号上网的方法详解
  13. 导入文本文件乱码问题
  14. .ipynb_checkpoints报错的解决方法
  15. 程序员进阶架构师、技术总监、CTO,需要掌握哪些核心技能
  16. [机器学习与scikit-learn-15]:算法-决策树-分类问题代码详解
  17. 7-26 输出大写英文字母
  18. Android入门,android开发需要什么基础
  19. Android的数据存储:SharedPrefrence存储,手机内部文件存储,手机外部文件存储
  20. 自然辩证法复习题 1

热门文章

  1. Ubuntu14.04LST安装weblogic11g
  2. 哈希表(hashtable)的javascript简单实现
  3. JFinal 1.5 发布,JAVA极速WEB+ORM框架
  4. Android API 中文(14) —— ViewStub
  5. 提取地图中道路_非机器学习方法·从遥感影像中提取道路
  6. zabbix4.2 系列(二):agent配置
  7. springboot三种过滤功能的使用与比较
  8. 用链表和数组实现HASH表,几种碰撞冲突解决方法
  9. JQ插件 jquery mobiscroll
  10. 关中断是否禁止任务调度?关中断能作为互斥吗?