linux小白
编译cpp文件应使用g++
若运行错误程序不产生core文件,可使用
ulimit -a
来查看当前是否开启
先用#ulimit -a可以查看系统core文件的大小限制(第一行),core文件大小设置为0, 即没有打开core dump设置;我这个是改变了的。
[email protected]:~/usegdb$ ulimit -a
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 8333
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 8333
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
临时改变方法:
使用#ulimit -c [kbytes]可以设置系统允许生成的core文件大小;
ulimit -c 0 不产生core文件
ulimit -c 100 设置core文件最大为100k
ulimit -c unlimited 不限制core文件大小
永久改变方法:
#vi /etc/profile 然后,在profile中添加:
ulimit -c 1073741824
(但是,若将产生的转储文件大小大于该数字时,将不会产生转储文件)
或者
ulimit -c unlimited
这样重启机器后生效了。 或者, 使用source命令使之马上生效。
#source /etc/profile
接下来
进入到gdb,接着运行程序
获取进程信息
获取此进程的堆栈信息