Отладка php с помощью gdb

Программный центр Ubuntu имеет множество упакованных приложений, но имеет тот недостаток, что он не может установить файлы .deb. Однако есть еще один вариант.

Использование GDebi для установки пакетов

GDebi - простой инструмент для установки файлов .deb. Он имеет графический интерфейс пользователя, но также может использоваться в вашем терминале. Он позволяет устанавливать локальные пакеты deb, разрешая и устанавливая зависимости. Он автоматически проверяет пакеты для своих зависимостей и попытается загрузить их из репозиториев программного обеспечения Ubuntu, если это возможно. Сначала вам нужно установить GDebi - просто установите пакет gdebi с помощью одного из перечисленных выше менеджеров пакетов или откройте терминал и введите sudo apt-get install gdebi

. Когда вы установили GDebi, используйте File Browser, чтобы найти пакет, который вы хотите установить. Файлы пакетов будут выглядеть примерно так:

Дважды щелкните пакет, чтобы открыть его с помощью GDebi. Если для выбранного пакета были выполнены все зависимости, просто нажмите кнопку «Установить пакет», чтобы установить его. GDebi предупредит вас, если есть неудовлетворенные зависимости, а это означает, что в репозиториях, которые вы используете, есть зависимости, которые не разрешены - вам нужно будет найти необходимые пакеты из другого источника.

6
задан 15 November 2010 в 03:17

9 ответов

В определенных ситуациях пакеты -dbg работают неправильно. Вместо этого попробуйте пакеты -dbgsym, доступные из отдельного репозитория «отладочные символы»:

https://wiki.ubuntu.com/DebuggingProgramCrash

Однако при попытке этого локального с Ubuntu 9.10, у меня нет проблем с загрузкой символов с использованием существующего пакета php5-dbg. Возможно, сначала убедитесь, что у вас установлены последние обновления, а затем попробуйте?

В качестве примера:

$ cat /tmp/test.php
<?php sleep(10); ?>
$ gdb php
...
(gdb) run /tmp/test.php
...
^C
Program received signal SIGINT, Interrupt.
0xf7fe0430 in __kernel_vsyscall ()
(gdb) bt
#0  0xf7fe0430 in __kernel_vsyscall ()
#1  0xf7a13b50 in nanosleep () from /lib/tls/i686/cmov/libc.so.6
#2  0xf7a13991 in sleep () from /lib/tls/i686/cmov/libc.so.6
#3  0x081fbfc1 in zif_sleep (ht=1, return_value=0x866d204, 
    return_value_ptr=0x0, this_ptr=0x0, return_value_used=0)
    at /build/buildd/php5-5.2.10.dfsg.1/ext/standard/basic_functions.c:4787
#4  0x082f9616 in zend_do_fcall_common_helper_SPEC (execute_data=0xffffafbc)
    at /build/buildd/php5-5.2.10.dfsg.1/Zend/zend_vm_execute.h:200
#5  0x082f511b in execute (op_array=0x866d7f0)
    at /build/buildd/php5-5.2.10.dfsg.1/Zend/zend_vm_execute.h:92
#6  0x082cf414 in zend_execute_scripts (type=8, retval=0x0, file_count=3)
    at /build/buildd/php5-5.2.10.dfsg.1/Zend/zend.c:1215
#7  0x08284166 in php_execute_script (primary_file=0xffffd454)
    at /build/buildd/php5-5.2.10.dfsg.1/main/main.c:2046
#8  0x08352c38 in main (argc=2, argv=0xffffd554)
    at /build/buildd/php5-5.2.10.dfsg.1/sapi/cli/php_cli.c:1170
4
ответ дан 26 May 2018 в 00:25
  • 1
    Это сделал трюк. Я не знаю, почему это не сработает с другим пакетом! Благодаря! – Johnco 10 February 2011 в 18:39

В определенных ситуациях пакеты -dbg работают неправильно. Вместо этого попробуйте пакеты -dbgsym, доступные из отдельного репозитория «отладочные символы»:

https://wiki.ubuntu.com/DebuggingProgramCrash

Однако при попытке этого локального с Ubuntu 9.10, у меня нет проблем с загрузкой символов с использованием существующего пакета php5-dbg. Возможно, сначала убедитесь, что у вас установлены последние обновления, а затем попробуйте?

В качестве примера:

$ cat /tmp/test.php <?php sleep(10); ?> $ gdb php ... (gdb) run /tmp/test.php ... ^C Program received signal SIGINT, Interrupt. 0xf7fe0430 in __kernel_vsyscall () (gdb) bt #0 0xf7fe0430 in __kernel_vsyscall () #1 0xf7a13b50 in nanosleep () from /lib/tls/i686/cmov/libc.so.6 #2 0xf7a13991 in sleep () from /lib/tls/i686/cmov/libc.so.6 #3 0x081fbfc1 in zif_sleep (ht=1, return_value=0x866d204, return_value_ptr=0x0, this_ptr=0x0, return_value_used=0) at /build/buildd/php5-5.2.10.dfsg.1/ext/standard/basic_functions.c:4787 #4 0x082f9616 in zend_do_fcall_common_helper_SPEC (execute_data=0xffffafbc) at /build/buildd/php5-5.2.10.dfsg.1/Zend/zend_vm_execute.h:200 #5 0x082f511b in execute (op_array=0x866d7f0) at /build/buildd/php5-5.2.10.dfsg.1/Zend/zend_vm_execute.h:92 #6 0x082cf414 in zend_execute_scripts (type=8, retval=0x0, file_count=3) at /build/buildd/php5-5.2.10.dfsg.1/Zend/zend.c:1215 #7 0x08284166 in php_execute_script (primary_file=0xffffd454) at /build/buildd/php5-5.2.10.dfsg.1/main/main.c:2046 #8 0x08352c38 in main (argc=2, argv=0xffffd554) at /build/buildd/php5-5.2.10.dfsg.1/sapi/cli/php_cli.c:1170
4
ответ дан 25 July 2018 в 22:53

В определенных ситуациях пакеты -dbg работают неправильно. Вместо этого попробуйте пакеты -dbgsym, доступные из отдельного репозитория «отладочные символы»:

https://wiki.ubuntu.com/DebuggingProgramCrash

Однако при попытке этого локального с Ubuntu 9.10, у меня нет проблем с загрузкой символов с использованием существующего пакета php5-dbg. Возможно, сначала убедитесь, что у вас установлены последние обновления, а затем попробуйте?

В качестве примера:

$ cat /tmp/test.php <?php sleep(10); ?> $ gdb php ... (gdb) run /tmp/test.php ... ^C Program received signal SIGINT, Interrupt. 0xf7fe0430 in __kernel_vsyscall () (gdb) bt #0 0xf7fe0430 in __kernel_vsyscall () #1 0xf7a13b50 in nanosleep () from /lib/tls/i686/cmov/libc.so.6 #2 0xf7a13991 in sleep () from /lib/tls/i686/cmov/libc.so.6 #3 0x081fbfc1 in zif_sleep (ht=1, return_value=0x866d204, return_value_ptr=0x0, this_ptr=0x0, return_value_used=0) at /build/buildd/php5-5.2.10.dfsg.1/ext/standard/basic_functions.c:4787 #4 0x082f9616 in zend_do_fcall_common_helper_SPEC (execute_data=0xffffafbc) at /build/buildd/php5-5.2.10.dfsg.1/Zend/zend_vm_execute.h:200 #5 0x082f511b in execute (op_array=0x866d7f0) at /build/buildd/php5-5.2.10.dfsg.1/Zend/zend_vm_execute.h:92 #6 0x082cf414 in zend_execute_scripts (type=8, retval=0x0, file_count=3) at /build/buildd/php5-5.2.10.dfsg.1/Zend/zend.c:1215 #7 0x08284166 in php_execute_script (primary_file=0xffffd454) at /build/buildd/php5-5.2.10.dfsg.1/main/main.c:2046 #8 0x08352c38 in main (argc=2, argv=0xffffd554) at /build/buildd/php5-5.2.10.dfsg.1/sapi/cli/php_cli.c:1170
4
ответ дан 27 July 2018 в 01:11

В определенных ситуациях пакеты -dbg работают неправильно. Вместо этого попробуйте пакеты -dbgsym, доступные из отдельного репозитория «отладочные символы»:

https://wiki.ubuntu.com/DebuggingProgramCrash

Однако при попытке этого локального с Ubuntu 9.10, у меня нет проблем с загрузкой символов с использованием существующего пакета php5-dbg. Возможно, сначала убедитесь, что у вас установлены последние обновления, а затем попробуйте?

В качестве примера:

$ cat /tmp/test.php <?php sleep(10); ?> $ gdb php ... (gdb) run /tmp/test.php ... ^C Program received signal SIGINT, Interrupt. 0xf7fe0430 in __kernel_vsyscall () (gdb) bt #0 0xf7fe0430 in __kernel_vsyscall () #1 0xf7a13b50 in nanosleep () from /lib/tls/i686/cmov/libc.so.6 #2 0xf7a13991 in sleep () from /lib/tls/i686/cmov/libc.so.6 #3 0x081fbfc1 in zif_sleep (ht=1, return_value=0x866d204, return_value_ptr=0x0, this_ptr=0x0, return_value_used=0) at /build/buildd/php5-5.2.10.dfsg.1/ext/standard/basic_functions.c:4787 #4 0x082f9616 in zend_do_fcall_common_helper_SPEC (execute_data=0xffffafbc) at /build/buildd/php5-5.2.10.dfsg.1/Zend/zend_vm_execute.h:200 #5 0x082f511b in execute (op_array=0x866d7f0) at /build/buildd/php5-5.2.10.dfsg.1/Zend/zend_vm_execute.h:92 #6 0x082cf414 in zend_execute_scripts (type=8, retval=0x0, file_count=3) at /build/buildd/php5-5.2.10.dfsg.1/Zend/zend.c:1215 #7 0x08284166 in php_execute_script (primary_file=0xffffd454) at /build/buildd/php5-5.2.10.dfsg.1/main/main.c:2046 #8 0x08352c38 in main (argc=2, argv=0xffffd554) at /build/buildd/php5-5.2.10.dfsg.1/sapi/cli/php_cli.c:1170
4
ответ дан 2 August 2018 в 04:17

В определенных ситуациях пакеты -dbg работают некорректно. Вместо этого попробуйте пакеты -dbgsym , доступные из отдельного репозитория «отладочные символы»:

https://wiki.ubuntu.com/DebuggingProgramCrash

Однако при попытке локального использования Ubuntu 9.10 у меня нет проблем с загрузкой символов с использованием существующего пакета php5-dbg . Возможно, сначала убедитесь, что у вас установлены последние обновления, а затем попробуйте?

В качестве примера:

  $ cat /tmp/test.php & lt;? Php sleep  (10);  ? & GT;  $ gdb php ... (gdb) run /tmp/test.php ... ^ C Программный сигнал SIGINT, прерывание.  0xf7fe0430 в __kernel_vsyscall () (gdb) bt # 0 0xf7fe0430 в __kernel_vsyscall () # 1 0xf7a13b50 в nanosleep () из /lib/tls/i686/cmov/libc.so.6 # 2 0xf7a13991 во сне () из / lib / tls  /i686/cmov/libc.so.6 # 3 0x081fbfc1 в zif_sleep (ht = 1, return_value = 0x866d204, return_value_ptr = 0x0, this_ptr = 0x0, return_value_used = 0) в /build/buildd/php5-5.2.10.dfsg.  1 / ext / standard / basic_functions.c: 4787 # 4 0x082f9616 в zend_do_fcall_common_helper_SPEC (execute_data = 0xffffafbc) в /build/buildd/php5-5.2.10.dfsg.1/Zend/zend_vm_execute.h:200 # 5 0x082f511b в исполнении (  op_array = 0x866d7f0) в /build/buildd/php5-5.2.10.dfsg.1/Zend/zend_vm_execute.h:92 # 6 0x082cf414 в zend_execute_scripts (type = 8, retval = 0x0, file_count = 3) в / build / buildd  /php5-5.2.10.dfsg.1/Zend/zend.c:1215 # 7 0x08284166 в php_execute_script (primary_file = 0xffffd454) в /build/buildd/php5-5.2.10.dfsg.1/main/main.c:  2046 # 8 0x08352c38 в main (argc = 2, argv = 0xffffd554) в /build/buildd/php5-5.2.10.dfsg.1/sapi/cli/php_cli.c:1170  
4
ответ дан 4 August 2018 в 20:22

В определенных ситуациях пакеты -dbg работают некорректно. Вместо этого попробуйте пакеты -dbgsym , доступные из отдельного репозитория «отладочные символы»:

https://wiki.ubuntu.com/DebuggingProgramCrash

Однако при попытке локального использования Ubuntu 9.10 у меня нет проблем с загрузкой символов с использованием существующего пакета php5-dbg . Возможно, сначала убедитесь, что у вас установлены последние обновления, а затем попробуйте?

В качестве примера:

  $ cat /tmp/test.php & lt;? Php sleep  (10);  ? & GT;  $ gdb php ... (gdb) run /tmp/test.php ... ^ C Программный сигнал SIGINT, прерывание.  0xf7fe0430 в __kernel_vsyscall () (gdb) bt # 0 0xf7fe0430 в __kernel_vsyscall () # 1 0xf7a13b50 в nanosleep () из /lib/tls/i686/cmov/libc.so.6 # 2 0xf7a13991 во сне () из / lib / tls  /i686/cmov/libc.so.6 # 3 0x081fbfc1 в zif_sleep (ht = 1, return_value = 0x866d204, return_value_ptr = 0x0, this_ptr = 0x0, return_value_used = 0) в /build/buildd/php5-5.2.10.dfsg.  1 / ext / standard / basic_functions.c: 4787 # 4 0x082f9616 в zend_do_fcall_common_helper_SPEC (execute_data = 0xffffafbc) в /build/buildd/php5-5.2.10.dfsg.1/Zend/zend_vm_execute.h:200 # 5 0x082f511b в исполнении (  op_array = 0x866d7f0) в /build/buildd/php5-5.2.10.dfsg.1/Zend/zend_vm_execute.h:92 # 6 0x082cf414 в zend_execute_scripts (type = 8, retval = 0x0, file_count = 3) в / build / buildd  /php5-5.2.10.dfsg.1/Zend/zend.c:1215 # 7 0x08284166 в php_execute_script (primary_file = 0xffffd454) в /build/buildd/php5-5.2.10.dfsg.1/main/main.c:  2046 # 8 0x08352c38 в main (argc = 2, argv = 0xffffd554) в /build/buildd/php5-5.2.10.dfsg.1/sapi/cli/php_cli.c:1170  
4
ответ дан 6 August 2018 в 04:21

В определенных ситуациях пакеты -dbg работают некорректно. Вместо этого попробуйте пакеты -dbgsym , доступные из отдельного репозитория «отладочные символы»:

https://wiki.ubuntu.com/DebuggingProgramCrash

Однако при попытке локального использования Ubuntu 9.10 у меня нет проблем с загрузкой символов с использованием существующего пакета php5-dbg . Возможно, сначала убедитесь, что у вас установлены последние обновления, а затем попробуйте?

В качестве примера:

  $ cat /tmp/test.php & lt;? Php sleep  (10);  ? & GT;  $ gdb php ... (gdb) run /tmp/test.php ... ^ C Программный сигнал SIGINT, прерывание.  0xf7fe0430 в __kernel_vsyscall () (gdb) bt # 0 0xf7fe0430 в __kernel_vsyscall () # 1 0xf7a13b50 в nanosleep () из /lib/tls/i686/cmov/libc.so.6 # 2 0xf7a13991 во сне () из / lib / tls  /i686/cmov/libc.so.6 # 3 0x081fbfc1 в zif_sleep (ht = 1, return_value = 0x866d204, return_value_ptr = 0x0, this_ptr = 0x0, return_value_used = 0) в /build/buildd/php5-5.2.10.dfsg.  1 / ext / standard / basic_functions.c: 4787 # 4 0x082f9616 в zend_do_fcall_common_helper_SPEC (execute_data = 0xffffafbc) в /build/buildd/php5-5.2.10.dfsg.1/Zend/zend_vm_execute.h:200 # 5 0x082f511b в исполнении (  op_array = 0x866d7f0) в /build/buildd/php5-5.2.10.dfsg.1/Zend/zend_vm_execute.h:92 # 6 0x082cf414 в zend_execute_scripts (type = 8, retval = 0x0, file_count = 3) в / build / buildd  /php5-5.2.10.dfsg.1/Zend/zend.c:1215 # 7 0x08284166 в php_execute_script (primary_file = 0xffffd454) в /build/buildd/php5-5.2.10.dfsg.1/main/main.c:  2046 # 8 0x08352c38 в main (argc = 2, argv = 0xffffd554) в /build/buildd/php5-5.2.10.dfsg.1/sapi/cli/php_cli.c:1170  
4
ответ дан 7 August 2018 в 22:27

В определенных ситуациях пакеты -dbg работают некорректно. Вместо этого попробуйте пакеты -dbgsym , доступные из отдельного репозитория «отладочные символы»:

https://wiki.ubuntu.com/DebuggingProgramCrash

Однако при попытке локального использования Ubuntu 9.10 у меня нет проблем с загрузкой символов с использованием существующего пакета php5-dbg . Возможно, сначала убедитесь, что у вас установлены последние обновления, а затем попробуйте?

В качестве примера:

  $ cat /tmp/test.php & lt;? Php sleep  (10);  ? & GT;  $ gdb php ... (gdb) run /tmp/test.php ... ^ C Программный сигнал SIGINT, прерывание.  0xf7fe0430 в __kernel_vsyscall () (gdb) bt # 0 0xf7fe0430 в __kernel_vsyscall () # 1 0xf7a13b50 в nanosleep () из /lib/tls/i686/cmov/libc.so.6 # 2 0xf7a13991 во сне () из / lib / tls  /i686/cmov/libc.so.6 # 3 0x081fbfc1 в zif_sleep (ht = 1, return_value = 0x866d204, return_value_ptr = 0x0, this_ptr = 0x0, return_value_used = 0) в /build/buildd/php5-5.2.10.dfsg.  1 / ext / standard / basic_functions.c: 4787 # 4 0x082f9616 в zend_do_fcall_common_helper_SPEC (execute_data = 0xffffafbc) в /build/buildd/php5-5.2.10.dfsg.1/Zend/zend_vm_execute.h:200 # 5 0x082f511b в исполнении (  op_array = 0x866d7f0) в /build/buildd/php5-5.2.10.dfsg.1/Zend/zend_vm_execute.h:92 # 6 0x082cf414 в zend_execute_scripts (type = 8, retval = 0x0, file_count = 3) в / build / buildd  /php5-5.2.10.dfsg.1/Zend/zend.c:1215 # 7 0x08284166 в php_execute_script (primary_file = 0xffffd454) в /build/buildd/php5-5.2.10.dfsg.1/main/main.c:  2046 # 8 0x08352c38 в main (argc = 2, argv = 0xffffd554) в /build/buildd/php5-5.2.10.dfsg.1/sapi/cli/php_cli.c:1170  
4
ответ дан 10 August 2018 в 10:36

В определенных ситуациях пакеты -dbg работают некорректно. Вместо этого попробуйте пакеты -dbgsym , доступные из отдельного репозитория «отладочные символы»:

https://wiki.ubuntu.com/DebuggingProgramCrash

Однако при попытке локального использования Ubuntu 9.10 у меня нет проблем с загрузкой символов с использованием существующего пакета php5-dbg . Возможно, сначала убедитесь, что у вас установлены последние обновления, а затем попробуйте?

В качестве примера:

  $ cat /tmp/test.php & lt;? Php sleep  (10);  ? & GT;  $ gdb php ... (gdb) run /tmp/test.php ... ^ C Программный сигнал SIGINT, прерывание.  0xf7fe0430 в __kernel_vsyscall () (gdb) bt # 0 0xf7fe0430 в __kernel_vsyscall () # 1 0xf7a13b50 в nanosleep () из /lib/tls/i686/cmov/libc.so.6 # 2 0xf7a13991 во сне () из / lib / tls  /i686/cmov/libc.so.6 # 3 0x081fbfc1 в zif_sleep (ht = 1, return_value = 0x866d204, return_value_ptr = 0x0, this_ptr = 0x0, return_value_used = 0) в /build/buildd/php5-5.2.10.dfsg.  1 / ext / standard / basic_functions.c: 4787 # 4 0x082f9616 в zend_do_fcall_common_helper_SPEC (execute_data = 0xffffafbc) в /build/buildd/php5-5.2.10.dfsg.1/Zend/zend_vm_execute.h:200 # 5 0x082f511b в исполнении (  op_array = 0x866d7f0) в /build/buildd/php5-5.2.10.dfsg.1/Zend/zend_vm_execute.h:92 # 6 0x082cf414 в zend_execute_scripts (type = 8, retval = 0x0, file_count = 3) в / build / buildd  /php5-5.2.10.dfsg.1/Zend/zend.c:1215 # 7 0x08284166 в php_execute_script (primary_file = 0xffffd454) в /build/buildd/php5-5.2.10.dfsg.1/main/main.c:  2046 # 8 0x08352c38 в main (argc = 2, argv = 0xffffd554) в /build/buildd/php5-5.2.10.dfsg.1/sapi/cli/php_cli.c:1170  
4
ответ дан 13 August 2018 в 17:07
  • 1
    Это сделал трюк. Я не знаю, почему это не сработает с другим пакетом! Благодаря! – Johnco 10 February 2011 в 18:39

Другие вопросы по тегам:

Похожие вопросы: