专栏首页calvin在dockers中调试dump的dotnet程序

在dockers中调试dump的dotnet程序

其他调试参考文章

centos7使用lldb调试netcore应用转储dump文件 centos7 lldb 调试netcore应用的内存泄漏和死循环示例(dump文件调试)

生成dump文件

如何在docker容器里面创建dump文件请参考:dotnet core调试docker下生成的dump文件

构建一个dotnet,lldb的docker image

dockerfile 文件,基于microsoft/dotnet:2.2-sdk安装lldb,docker builder -f dockerifle --pull -t dotnet-lldb build出来image

FROM microsoft/dotnet:2.2-sdk

RUN apt-get update && apt-get install -y \
    cmake llvm-3.9 \
    clang-3.9 \
    lldb-3.9 \
    liblldb-3.9-dev \
    libunwind8 \
    libunwind8-dev \
    gettext \
    libicu-dev \
    liblttng-ust-dev \
    libcurl4-openssl-dev \
    libssl-dev \
    uuid-dev \
    libnuma-dev \
    libkrb5-dev

安装dotnet-sos插件

dotnet-sos插件可以为我们的dump文件自动选择sos版本,可以有效避免因为dump程序所在机器和调试所有机器安装的dotnet sdk版本不一致带来的The libcoreclr.so module is not loaded yet in the target process错误问题。

dotnet tool install -g dotnet-sos
#插件安装完成后,运行
dotnet-sos install #如果找不到命令,可以到`~/.dotnet/tools`下面去。

安装dotnet-symbol插件

下载组件的符号文件。方便有效查看堆栈信息

dotnet tool install -g dotnet-symbol

插件安装后,针对要调试的dump文件下载对应的符号,实用程序dotnet-symbol将自动为我们的dump文件下载缺失的pdb文件。

#cd 到一个dump文件所在目录
dotnet-symbol <dump文件>

启动lldb进行调试

#在dump文件目录
lldb-3.9 dotnet -c <my dump file>

参考

https://github.com/dotnet/diagnostics SOS实用工具:https://github.com/dotnet/diagnostics/blob/master/documentation/installing-sos-instructions.md coredump调试参考:https://github.com/dotnet/diagnostics/blob/master/documentation/debugging-coredump.md SOS命令参考:https://github.com/dotnet/diagnostics/blob/master/documentation/sos-debugging-extension.md

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • mssql 优化之索引部分

    具有较高的 index_advantage 的索引那些 SQL 服务器认为会产生最大的积极影响,减少工作量,基于查询的成本和预期他们会使用索引的次数减少。

    旺财的城堡
  • 【nodejs】让nodejs像后端mvc框架(asp.net mvc)一样处理请求--请求处理函数装饰器注册篇(5/8)【controller+action】

    上篇文章把action的注册讲完了,但是我们的处理函数没有指定可接受的httpmethod,也没有别名上面的。下面我们使用typescript的特性之一装饰器来...

    旺财的城堡
  • centos7使用lldb调试netcore应用转储dump文件

    脚本大概思路就是下载如下所表示的组件所有源码,除llvm外的其他组件源代码解压到llvm/tools目录下,这样子源代码就全部准备好 BUILD_TARGET...

    旺财的城堡
  • 程序猿修养 从安装 dotnet 开始

    本来程序员的开始应该是从命令行开始,但是能看到博客的小伙伴,预计都了解命令行了。但是如果是一个空命令行,能做的事情实在不够清真,能提升的效率也有限。如何站在巨人...

    林德熙
  • Springsecurity之SecurityContextHolderStrategy

    注:下面分析的版本是spring-security-4.2.x,源码的github地址是: https://github.com/spring-projects...

    克虏伯
  • why there is always a HTTP 302 redirect when clicking workcenter

    版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)

    Jerry Wang
  • 不会是电池杯具了吧

    libo1106
  • 【Python 第55课】 正则表达式(1)

    今天来挖个新坑,讲讲正则表达式。 什么是正则表达式?在回答这个问题之前,先来看看为什么要有正则表达式。 在编程处理文本的过程中,经常会需要按照某种规则去查找一些...

    Crossin先生
  • 使用静态基类方案让 ASP.NET Core 实现遵循 HATEOAS Restful Web API

    Hypermedia As The Engine Of Application State (HATEOAS) HATEOAS(Hypermedia as t...

    solenovex
  • python中执行shell命令的几个方

    最近有个需求就是页面上执行shell命令,第一想到的就是os.system, 代码如下:

    用户2398817

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动