當前位置:
首頁 >
如何排查 StackOverflow 异常
發布時間:2023/12/4
62
豆豆
生活随笔
收集整理的這篇文章主要介紹了
如何排查 StackOverflow 异常
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
StackOverflowException 從名字上就能看出來它表示當前執行棧溢出,通常都是由于無限的方法遞歸調用導致的。
舉個例子,假如你有下面的一段代碼:
using?System;namespace?temp {class?Program{static?void?Main(string[]?args){Main(args);?//?Oops,?this?recursion?won't?stop.}} }上面的 Main 方法會不斷的調用自己直到沒有足夠的棧空間,一旦到了這個臨界值,執行引擎將會拋出 StackOverflowException。
>?dotnet?run Stack?overflow.Example
運行程序前先配置變量 export DOTNET_DbgEnableMiniDump=1,這樣就可以在crash的時候自動生成dump文件。
使用 dotnet-sos 安裝 sos 擴展
使用 lldb 查看dump中拋出堆棧溢出的線程棧。
從堆棧看 0x00007f59b40900cc 重復了很多次,然后使用 !ip2md 查看該地址對應的方法描述符。
通過 /temp/Program.cs @ 9 和 temp.Program.Main(System.String[]) 兩個信息相信就可以找出程序中的問題,當然,如果你還不是特別明白的話,可以在質疑處多加點日志排查。
總結
以上是生活随笔為你收集整理的如何排查 StackOverflow 异常的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 听说过Netflix的Chaos Mon
- 下一篇: 技术分享|单元测试推广与实战-在全新的D