溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

怎么正確使用dotnet-*工具

發(fā)布時(shí)間:2021-12-27 17:17:55 來(lái)源:億速云 閱讀:149 作者:iii 欄目:開(kāi)發(fā)技術(shù)

本篇內(nèi)容主要講解“怎么正確使用dotnet-*工具”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“怎么正確使用dotnet-*工具”吧!

安裝

  • 因?yàn)槲覀儸F(xiàn)在都是容器化時(shí)代了,所以我們可以把這類工具全部制作成基礎(chǔ)鏡像

  • 準(zhǔn)備Dockerfile

FROM mcr.microsoft.com/dotnet/sdk:3.1 AS sdk
RUN dotnet tool install --tool-path /tools dotnet-trace
RUN dotnet tool install --tool-path /tools dotnet-counters
RUN dotnet tool install --tool-path /tools dotnet-dump
RUN dotnet tool install --tool-path /tools dotnet-gcdump

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1 AS runtime
WORKDIR /tools
COPY --from=sdk /tools .

basedockerfile.yaml

驗(yàn)證

基礎(chǔ)鏡像做好了,查看下鏡像的大小應(yīng)該就比runtime的大小多幾十兆,相比為了使用dotnet-* tool而直接采用sdk的話,體積小了很多很多
用我們剛才制作的基礎(chǔ)鏡像隨便起個(gè)demo程序驗(yàn)證下
  • 已經(jīng)包含了tools文件夾了,里面存放了我們的tools工具

怎么正確使用dotnet-*工具

怎么正確使用dotnet-*工具

  • 以dotnet-trace為例,測(cè)試下是否可用(ps:注意使用方式)

怎么正確使用dotnet-*工具

至此包含tools的runtime基礎(chǔ)鏡像制作完畢。

dotnet-dump

它只能收集托管內(nèi)存,不能用于條是本地代碼的問(wèn)題,而且分析它所創(chuàng)建的dump文件,必須和當(dāng)前環(huán)境保持一致

createdump

它既可以收集本地信息又可以收集托管信息,是一種比較全面而且推薦的方法
雖然gdb、gcore也能起到同樣的作用,但是他們可能會(huì)在收集的時(shí)候錯(cuò)過(guò)一些托管狀態(tài),導(dǎo)致最后你分析dump文件的時(shí)候有”UNKNOWN“的錯(cuò)誤
這個(gè)工具是伴隨著.net core runtime安裝的,目錄一般在”/usr/share/dotnet/shared/Microsoft.NETCore.App/[version]“下
開(kāi)始使用:
  • /usr/share/dotnet/shared/Microsoft.NETCore.App/3.1.10/createdump -u 1 (1是我容器中程序的進(jìn)程id)

怎么正確使用dotnet-*工具

  • 他會(huì)將coredump文件生成到容器的tmp目錄下,至此沒(méi)報(bào)錯(cuò)的話,說(shuō)明成功

  • 如果報(bào)權(quán)限相關(guān)錯(cuò)誤,可以在你的yaml文件里加上:

怎么正確使用dotnet-*工具

分析coredump文件

先將上面生成在tmp下的coredump文件copy到可以調(diào)試的地方
kubectl cp  bookstore/demo-7b6d9f6d4f-2t8hl:/tmp/coredump.1 /root/mydump/coredump.1 -c app-k8s

怎么正確使用dotnet-*工具

然后為我們的coredump.1文件下載關(guān)聯(lián)的symbol:
如果你準(zhǔn)備分析dump的機(jī)器沒(méi)有dotnet sdk的話,先裝一個(gè)把
  • sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm

  • sudo yum install dotnet-sdk-3.1

如果dotnet-symbol沒(méi)有安裝的話,安裝一個(gè)
  • dotnet tool install --global dotnet-symbol

  • 然后關(guān)閉當(dāng)前終端,再打開(kāi)一個(gè)新的

然后執(zhí)行dotnet-symbol --host-only --debugging coredump.1

怎么正確使用dotnet-*工具

  • 看到dac,dbi文件寫(xiě)入就代表成功了,這時(shí)候你的文件夾應(yīng)該長(zhǎng)這樣

怎么正確使用dotnet-*工具

然后我們使用lldb進(jìn)行調(diào)試
  • 如果你機(jī)器里沒(méi)裝的話,先裝一個(gè)吧

  • 安裝sos插件:

    • dotnet tool install --global dotnet-sos

    • dotnet-sos install

  • lldb-8 --core coredump.1

  • 然后就可以用lldb來(lái)分析dump文件了

到此,相信大家對(duì)“怎么正確使用dotnet-*工具”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI