Thursday, March 12, 2009

how to get core dump

if on crash your program does not produce a coredump then check if you set up your console to ensure that dumps are created?

The command is ulimit -c 50000 where 50MB is the size in bytes.

- Mihir Patel


3 comments:

Paul Mohr said...

Wouldn't that be 50000*1024 or about 50 megabytes?


ulimit -c xxxx

Values are in 1024-byte increments
ulimit -a

reports the following:

core file size (blocks, -c) 50000

Mihir said...

You are correct (same information can be found from the man pages).

============================

ulimit [-SHacdflmnpstuv [limit]]

Provides control over the resources available to the shell and to processes started by it, on systems that allow such control. The -H and -S options specify that the hard or soft limit is set for the given resource. A hard limit cannot be increased once it is set; a soft limit may be increased up to the value of the hard limit. If neither -H nor -S is specified, both the soft and hard limits are set. The value of limit can be a number in the unit specified for the resource or one of the special values hard, soft, or unlimited, which stand for the current hard limit, the current soft limit, and no limit, respectively. If limit is omitted, the current value of the softlimit of the resource is printed, unless the -H option isgiven. When more than one resource is specified, the limitname and unit are printed before the value. Other options are interpreted as follows:
-a All current limits are reported
-c The maximum size of core files created
-d The maximum size of a processâs data segment
-f The maximum size of files created by the shell
-l The maximum size that may be locked into memory
-m The maximum resident set size
-n The maximum number of open file descriptors (most sys-
tems do not allow this value to be set)
-p The pipe size in 512-byte blocks (this may not be set)
-s The maximum stack size
-t The maximum amount of cpu time in seconds
-u The maximum number of processes available to a single
user
-v The maximum amount of virtual memory available to the
shell

If limit is given, it is the new value of the specified resource (the -a option is display only). If no option is given, then -f is assumed. Values are in 1024-byte increments, except for -t, which is in seconds, -p, which is in units of 512-byte blocks, and -n and -u, which are unscaled values. The return status is 0 unless an invalid option or argument is supplied, or an error occurs while setting a new limit.

Anonymous said...

Useful, thanks.

Also found that the core dump was not created in the current directory, but found the answer here http://stackoverflow.com/questions/2065912/core-dumped-but-core-file-is-not-in-current-directory