2023年11月27日发(作者:)

嵌⼊式linux段错误,段错误调试神器-CoreDump详解

⼀、前⾔:

有的程序可以通过编译, 但在运⾏时会出现Segment fault(段错误). 这通常都是指针错误引起的. 但这不像编译错误⼀样会提⽰到⽂件某⼀

⾏, ⽽是没有任何信息, 使得我们的调试变得困难起来.

gdb: 有⼀种办法是, 我们⽤gdb的step, ⼀步⼀步寻找. 这放在短⼩的代码中是可⾏的, 但要让你step⼀个上万⾏的代码, 我想你会从此厌恶

程序员这个名字, ⽽把他叫做调试员. 我们还有更好的办法, 这就是core file.

ulimit: 如果想让系统在信号中断造成的错误时产⽣core⽂件, 我们需要在shell中按如下设置: #设置core⼤⼩为⽆限 ulimit -c unlimited #

设置⽂件⼤⼩为⽆限 ulimit unlimited 这些需要有root权限, 在ubuntu下每次重新打开中断都需要重新输⼊上⾯的第⼀条命令, 来设置core

-s The maximum stack size

可通过以下命令修改此⽂件:

ulimit -- ⽤户资源限制命令

⽂件h的⼤⼩是150062字节,⽽我们设定的创建⽂件的⼤⼩是512字节x100块=51200字节,当然系统就会根据你的设置⽣成了51200字

-s 以 K 字节为单位指定堆栈的⼤⼩。