Markus Rechberger / C / Core Dump
StartSeite | MarkusRechberger/ C/ | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Was mache ich mit coredumps?! | |
Programmerstellung | |
Das jeweilige Programm sollte mit -ggdb3 kompiliert werden, Level 3 ist das höchste level das angegeben werden kann
Level 3 fügt Informationen wie Makro definitionen an die Debug Information.
Bevor die Applikation gestartet wird sollte man überprüfen ob das erstellen von Coredumps überhaupt erlaubt ist.
Coredumps einschalten:
am besten man setzt die Limits auf verpfuschten Live Systemen direkt in der Konfigurationsdatei:
http://www.linux-hamburg.de/limits.html
| My problems:
1. What's the difference btween soft and hard limit?
What will happen if I exceed the soft limit but in the hard limit?
----
The 'soft' values will be the default/starting value, and the user can
increse this up to the 'hard' value, if they want.
Only the root user can increse the hard limits. |
|
|
Coredumps können durch das Signal SIGSEGV erzeugt werden.
bsp.: kill -SIGSEGV <pid>
Bei Apache gibt es eine Direktive CoreDumpDirectory?.
Coredumps debuggen mit gdb | |
| gdb crash core
...
(gdb) bt
..
#2 0x1234444 in main () at foo.c:6
(gdb) frame 2
#2 0x1234444 in main() at foo.c:6
6 scanf("%d",input);
(gdb) print input
$1 = 0 |
|
|
(source linux programming bible)
Apache Coredumps | |
Coredumps werden nicht erzeugt wenn setuid() aufgerufen wird, bei Debian wird apache standardmäßig als root gestartet und die Childs dann mittels setuid() dem user www-data oder nobody zugewiesen.
Um CoreDumps? von den ApacheChilds? zu bekommen muss man mod_prctl.c ( http://people.apache.org/~trawick/mod_prctl.c) am besten mit apxs -cia mod_pctl.c installieren.
[notice] child pid 1338 exit signal Segmentation fault (11), possible coredump in /opt/www
- Berechtigungen von /opt/www überprüfen
- ulimit beachten
Folgendes zeigt das php's APC Apache auch zum Absturz bringt (php 4.3.9):
| # gdb /usr/local/bin/httpd core.1338
<snip>
(gdb) bt
#0 0x402d9853 in zend_hash_find (ht=0x82cd2ec, arKey=0x39333032 <Address 0x39333032 out of bounds>, nKeyLength=25857, pData=0xbfff63e0) at /usr/local/src/php-4.3.9/Zend/zend_hash.c:888
#1 0x402df84d in zend_fetch_dimension_address (result=0x40de31c0, op1=0x40de31d0, op2=0x40de31e0, Ts=0xbfff6434, type=3) at /usr/local/src/php-4.3.9/Zend/zend_execute.c:643
#2 0x402e33dc in execute (op_array=0x81a5c10) at /usr/local/src/php-4.3.9/Zend/zend_execute.c:1312
#3 0x4096db80 in my_execute (op_array=0x81a5c10) at /usr/local/src/APC-2.0.3/apc_main.c:199
#4 0x402e6d0a in execute (op_array=0x82b0d34) at /usr/local/src/php-4.3.9/Zend/zend_execute.c:1684
#5 0x4096db80 in my_execute (op_array=0x82b0d34) at /usr/local/src/APC-2.0.3/apc_main.c:199
#6 0x402e6d0a in execute (op_array=0x829fccc) at /usr/local/src/php-4.3.9/Zend/zend_execute.c:1684
#7 0x4096db80 in my_execute (op_array=0x829fccc) at /usr/local/src/APC-2.0.3/apc_main.c:199
#8 0x402e6d0a in execute (op_array=0x829fd8c) at /usr/local/src/php-4.3.9/Zend/zend_execute.c:1684
#9 0x4096db80 in my_execute (op_array=0x829fd8c) at /usr/local/src/APC-2.0.3/apc_main.c:199
#10 0x402d4e5e in zend_execute_scripts (type=8, retval=0x0, file_count=3) at /usr/local/src/php-4.3.9/Zend/zend.c:891
#11 0x402aca25 in php_execute_script (primary_file=0xbffff8d8) at /usr/local/src/php-4.3.9/main/main.c:1735
#12 0x402ed526 in apache_php_module_main (r=0x8171104, display_source_mode=0) at /usr/local/src/php-4.3.9/sapi/apache/sapi_apache.c:54
#13 0x402ee14e in send_php (r=0x8171104, display_source_mode=0, filename=0x0) at /usr/local/src/php-4.3.9/sapi/apache/mod_php4.c:621
#14 0x402ee1b2 in send_parsed_php (r=0x8171104) at /usr/local/src/php-4.3.9/sapi/apache/mod_php4.c:636
#15 0x0806bfe9 in ap_invoke_handler ()
#16 0x080826ac in process_request_internal ()
#17 0x08082716 in ap_process_request ()
#18 0x08078e30 in child_main ()
#19 0x080790a8 in make_child ()
#20 0x08079438 in perform_idle_server_maintenance ()
#21 0x08079a9c in standalone_main ()
#22 0x0807a0ec in main ()
#23 0x400a414f in __libc_start_main () from /lib/libc.so.6 |
|
|
| (gdb) print (char *)(executor_globals.function_state_ptr->function)->common.function_name
(gdb) print (char *)executor_globals.active_op_array->function_name
(gdb) print (char *)executor_globals.active_op_array->filename |
|
|
PHP Debuggen:
http://bugs.php.net/bugs-generating-backtrace.php
StartSeite | MarkusRechberger/ C/ | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Text dieser Seite ändern (zuletzt geändert: 4. April 2005 10:53 (diff))