前言介紹下面幾個工具:
Lldbcreatedumpdotnet-dumpdotnet-gcdumpdotnet-symbolProcdump
該文的前置篇為:
https://www.cnblogs.com/aoximin/p/16839812.html
獻(xiàn)給初學(xué)者,這篇就只介紹下看下日志和lldb,畢竟東西太多了 。
正文我以官網(wǎng)的例子作為演示:https://buggyambfiles.blob.core.windows.net/bin/buggyamb_v1.1.zip
項目地址:https://github.com/ahmetmithat/buggyamb
我這里就已經(jīng)發(fā)布可以訪問了,并且用戶nginx 作為轉(zhuǎn)發(fā),已經(jīng)啟動起來了 。
步驟在前面兩篇,如果看需要發(fā)布的,可以往前面兩篇看看,這里就不多復(fù)述了 。
[Unit]Description=BuggyAmb[Service]WorkingDirectory=/var/buggyambExecStart=/usr/bin/dotnet /var/buggyamb/BuggyAmb.dllRestart=awaysRestartSec=10SyslogIdentifier=BuggyAmbUser=rootEnvironment=ASPNETCORE_ENVIRONMENT=DevelopmentEnvironment=DOTNET_PRINT_TELEMETRY_MESSAGE=falseEnvironment=ASPNETCORE_URLS=http://0.0.0.0:6000[Install]WantedBy=multi-user.targetservice 的配置如上 。
頁面測試如下:
![重新整理 .net core 實(shí)踐篇 ———— linux上排查問題實(shí)用工具 [外篇]](http://shimg.jingyanzongjie.com/230727/1931314596-0.png)
文章插圖
里面分別是:
慢、處理異常、不處理異常、崩潰、未找到頁面、批處理
崩潰情況這種比較好排查的,其實(shí)一般看日志就行 。
我這里點(diǎn)一下Crash2,讓程序崩潰 。這里說明一下,上面我用的是官方例子,直接可以看代碼怎么崩潰的哈 。
public class Crash2Model : PageModel{ public string quote; ~Crash2Model() {if (quote.ToString() != string.Empty){quote = null;} } public void OnGet() { }}這個可以看下 。那么我們進(jìn)行日志排查一下錯誤 。
journalctl -r --identifier=BuggyAmb --since "10 minute ago"![重新整理 .net core 實(shí)踐篇 ———— linux上排查問題實(shí)用工具 [外篇]](http://shimg.jingyanzongjie.com/230727/1931315111-1.png)
文章插圖
![重新整理 .net core 實(shí)踐篇 ———— linux上排查問題實(shí)用工具 [外篇]](http://shimg.jingyanzongjie.com/230727/1931311526-2.png)
文章插圖
告訴我們15行錯誤 。
-r:按反向順序打印日志,以便首先列出最新日志 。--identifier:請記住 SyslogIdentifier=buggyamb-identifier 測試應(yīng)用程序的服務(wù)文件中的行 。(可以使用此方法強(qiáng)制日志僅顯示適用于有問題的應(yīng)用程序的條目 。)--since:顯示在指定的上一時期記錄的信息 。示例: --since "10 minute ago" 或 --since "2 hour ago".journalctl 還有很多其他的功能,這里就不一一舉例了 。核心轉(zhuǎn)儲centos 默認(rèn)不開啟的:
可以看下這個怎么開啟的:
https://blog.csdn.net/ProgramVAE/article/details/105921381
#!/bin/bash#me: coredumpshell.sh### Description: enable coredump and format the name of core file on centos system# enable coredump whith unlimited file-size for all usersecho -e "\n# enable coredump whith unlimited file-size for all users\n* soft core unlimited" >> /etc/security/limits.conf# set the path of core file with permission 777cd /var/buggyamb && mkdir corefile && chmod 777 corefile# format the name of core file.# %% – 符號%# %p – 進(jìn)程號# %u – 進(jìn)程用戶id# %g – 進(jìn)程用戶組id# %s – 生成core文件時收到的信號# %t – 生成core文件的時間戳(seconds since 0:00h, 1 Jan 1970)# %h – 主機(jī)名# %e – 程序文件名echo -e "/var/buggyamb/corefile/core-%e-%s-%u-%g-%p-%t" > /proc/sys/kernel/core_pattern# for centos7 system(update 2017.2.3 21:44)echo -e "/var/buggyamb/corefile/core-%e-%s-%u-%g-%p-%t" > /etc/sysctl.conf# suffix of the core file nameecho -e "1" > /proc/sys/kernel/core_uses_pid運(yùn)行之后就開啟了 。centos 一般用不上,我也沒有去調(diào)試過,這里就不演示了,只能說有這種東西 。
使用lldb安裝:yum install lldb
前文提及到這個要安裝lldb 3.9 以上的 。
按照這個文檔來編譯安裝也行:
https://github.com/dotnet/diagnostics/blob/main/documentation/lldb/linux-instructions.md
經(jīng)驗(yàn)總結(jié)擴(kuò)展閱讀
- .NET 7 中 LINQ 的瘋狂性能提升
- 兩種 .Net Core 3.0 對 MongoDB 的多條件查詢操作
- 螃蟹涼了可以重新加熱嗎
- 螃蟹斷掉的腿,還能重新長出來嗎?
- .NET性能優(yōu)化-復(fù)用StringBuilder
- .net 溫故知新:【8】.NET 中的配置從xml轉(zhuǎn)向json
- 哪些星座男生視妻如命
- 如何在.NET程序崩潰時自動創(chuàng)建Dump?
- .NET Conf 2022 – 11 月 8 日至 10 日
- .NET 零開銷抽象指南
