今天有幸在MPD工作坊听了张银奎老师讲授的“软件调试案例“,颇有收获,在此简单概括,后续补充更多详细内容
张老师送个架构师的箴言:”致广大而尽精微“
三个案例:
1. 堆损毁导致的随机崩溃
App堆中分配内存以存储字串,在Dll堆中释放导致错误。展开对栈和堆的探讨
调试工具:WinDbg
2. .Net程序调试之SDK安装程序死循环
调试工具:WinDBG + SOS 调试.Net程序
了解汇编程序可以很快读懂调试信息以发现bug的起因
3. 后台服务因段错误崩溃
Linux下,C编译器允许一个.c文件中的函数调用另一个.c文件中定义的函数尽管在当前文件没有include头文件或者extern 声明
熟悉Linux Core Kenerl source code可以很好的帮助调试Linux下的程序bug
调试工具:GDB
Online Resources:
https://sites.google.com/site/jozsefbekes/Home/windows-programming/windbg
http://www.debuginfo.com/articles/easywindbg.html