-
记录各种奇怪的bug和解决过程。
“事件簿”是因为debug时抽丝剥茧的过程和阅读推理小说有异曲同工之处。
-
参考教程:https://mp.weixin.qq.com/s/w_Z2ftOnb4VtB4jUaMF0fw
运行gdb:gdb 可执行文件,例如gdb /root/abacus-develop/build/abacus
用gdb调试程序:r (run)
断点:b 文件:行数,例如b /abacus/source/module_cell/module_symmetry/symmetry.cpp:1049
查看所有断点:i b (info breakpoints)(可以看到每个断点的编号)
删除断点:clear
删除特定断点:delete 断点编号。可以一次操作多个,比如delete 1-4
设置变量断点(当变量值改变时停下,显示下一行的内容):watch 变量名
查看变量的值
单次:p 变量名 或 print 变量名
每个断点都显示:display 变量名
查看显示列表: info display (可以看到每个显示项的编号)
取消显示:undisplay 编号
查看数组的值(p/print/display)
display *数组名@区间长度,例如 display *rotpos@12
继续,往下运行一步:n (next)
继续,直至下一个断点:c (continue)
查看调用堆栈:bt (backtrace),同where
-
梦开始的地方。
不必去追悼那有始无终的第一段工作,以及之后没能战胜内心抗拒导致失去的大半年。这一切连锁反应,杂乱无章,都可以视作铺垫,一切都是为了让4月的世界线收束来得更加激动人心。