首页
学习
活动
专区
圈层
工具
发布

gdb调试PHP扩展错误

有时候,使用PHP的第三方扩展之后,可能会发生一些错误,这个时候,可能就需要更底层的方式追踪调试程序发生错误的地方和原因,熟悉linux下C编程的肯定不陌生gdb 首先,使用ulimit -c命令,查看系统是否会生成...ulimit -c n #n大于0的数字 这样当程序运行错的时候,就会把运行过程记录到core文件里面 一般来说,core文件会在程序运行目录下生成,文件名类似 core.5740 下面开始使用gdb...来调试 sh gdb php -c core.5740 #进入之后显示很多东西,然后不停的 按 输入 bt回车,查看执行流程 #在gdb运行环境中,使用PHP的gdb调试脚本,其中/prefix/php-src-dir...是php的源码目录 source /prefix/php-src-dir/.gdbinit #zbacktrace会更加精确到PHP的错误 zbacktrace 详细的使用gdb调试PHP的文章,可以参考鸟哥的博客...如何调试PHP的Core之获取基本信息

2.2K20

GDB 调试

本文链接:https://blog.csdn.net/weixin_40313634/article/details/88619906 实验楼值GDB常用命令实战课程学习记录 1....安装工具: sudo apt-get install gdb 2. 编译可调式程序: gcc bugging.c -o bugging -g -m32 -o: 生成的可执行文件的名字。...-g: 生成的程序允许gdb 调试。 -m32:生成32位的程序。默认,程序位数和OS位数相同。 编译32位程序时报错:fatal error: sys/cdefs.h: 没有那个文件或目录。...调试: 开始调试:gdb bugging 结束调试:quit 断点在循环中时: enable once Num // 断点hit 一次后,失效。...设置断点 info breakpoints 显示断点信息 delete d 删除断点 print p 打印值 until u 执行到指定行 continue c 继续运行 run r 执行程序,启动调试

1.9K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    深入了解PHP:用gdb调试源码

    如果你需要调试扩展比如swoole你需要设置扩展的debug参数,可以参考扩展的./configure文件说明。 gdb使用 这里简单介绍一下gdb的基本使用,更详细的使用方法可以自行google。...启动gdb 捕获进程 gdb -p {pid} run 方法启动 gdb php run test3.php 通过core 文件 gdb -c core.8451 断点 break n :在第n行处设置断点...next (简写n):当前函数,下一行 step (简写s):跳入函数内部 where/bt :当前运行的堆栈列表; php gdb 小工具 这里就是本文的重点了php为gdb提供了一组小工具,在源代码目录下的....gdbinit文件中,它可以帮助我们更好的gdb php源代码。...gdb php //注意这里要用debug版本的 (gdb) break var.c:211 Breakpoint 1 at 0x76e717: file /data/env/runtime/php-7.1.33

    1.5K20

    GDB调试

    这些section里保存了调试信息,目前ELF文件采用DWARF 3(Debug With Arbitrary Record Format)标准的调试信息格式。 使用GDB你可以: 1....回车在GDB相当于重复上一个命令。 启动GDB运行程序 运行GDB调试a.out程序有以下几种方式: 方式一:直接运行gdb,然后在gdb中执行“file a.out”加载程序。...“gdb a.out 19475”来调试运行中的a.out。...通过cd命令可以更改目录,pwd显示当前所在目录 准备就绪后就可以真正开始用GDB来调试程序了。...暂停、恢复程序运行 调试程序,首先是要让程序是某些感兴趣的点上停下来,GDB有以下几种方式通知GDB暂停程序的运行:断点、观察点、捕捉点(GDB中这三种都统称为断点breakpoints)、信号、线程停止

    2.7K10

    【GDB调试技巧】提高gdb的调试效率

    gdb的启动 准备内容 一般来说GDB主要调试的是C/C++的程序。要调试C/C++的程序,首先在编译时,必须要把调试信息加到可执行文件中。...gdb program core 用gdb同时调试一个运行程序和core文件,core是程序非法执行后core dump后产生的文件。...gdb program 1234 如果程序是一个服务程序,那么可以指定这个服务程序运行时的进程ID。gdb会自动attach上去,并调试他。program应该在PATH环境变量中搜索得到。...GDB启动时,可以加上一些GDB的启动开关,详细的开关可以用gdb的help查看。 gdb技巧 1. gdb小技巧汇总 gdb技巧挺多的,比如说直接回车是继续执行上一次的代码 巧用tab补全 1....3.2 方式二:f 在过程中,f 命令的功能是帮助了解当前执行的代码所在的位置,特别是在调试过程中出现错误时,可以帮助确认错误发生的地点。

    66610

    GDB调试学习

    简介 GDB是GCC的调试工具。其功能如下: 启动程序,使程序按自定义形式运行; 使程序停止指定断点位置; 程序停止后,检查程序执行中的相应情况; 动态改变程序执行环境。...gdb调试 能进行GDB调试,一般在编译过程中,需使用-g参数。如果不使用-g参数,则在gdb调试过程中,将不能得到程序的函数名、变量名等信息,而只能看见运行时内存地址。...举例如下: 启动gdb调试的方法有以下三种: 常用的调试有以下几种: b // 停在程序的指定一行 b // 停在程序的某个函数处 b * // 停在编译器生成的prolog...q:退出gdb调试环境。 help [命令名称]:gdb帮助命令,提供对GDB各种命令的解释说明。...如果指定了“命令名称”参数,则显示该命令的详细说明;若果没有指定参数,则分类显示所有GDB命令,共用户进一步浏览和查询。 cd dir:运行GDB,使用dir作为gdb的工作目录。

    1.8K20

    gdb 调试基础

    如果使用gdb来调试,这种问题就可以迎刃而解了。gdb 可以完全操控程序运行,让程序走就走,让程序暂停就暂停,还可以随时查看程序运行时内部变量的值等信息。...使用 gdb 调试程序必须保证符合以下两个条件。...程序可以正常编译通过 程序编译时,必须用 -g 选项 // 加入 -g 选项时程序可以被调试 gcc main.c -o main -g 【开始调试】 要调试一个程序,你只需要输入命令 “gdb 被调试程序名...” 就可以了,如 gdb main 【调试中列出源码】 当进入 gdb 调试状态后,程序会等待你输入调试的命令,此时,你可以输入 list 命令(也可以使用简写 l),列出程序的源码,来决定对哪一个逻辑进行调试...(gdb) delete 2 (gdb) info break Num Type Disp Enb Address What 1 breakpoint

    52320

    GDB调试指南-单步调试

    前言 前面通过《启动调试》,《断点设置》,《变量查看》,我们已经了解了GDB基本的启动,设置断点,查看变量等,如果这些内容你还不知道,建议先回顾一下前面的内容。...在启动调试设置断点观察之后,没有我们想要的信息怎么办呢?这个时候,就需要单步执行或者跳过当前断点继续执行等等。而本文所说的单步调试并非仅仅指单步执行,而是指在你的控制之下,按要求执行语句。...num次,就达到继续执行n行的效果了: $ gdb gdbStep #启动调试 (gdb)b 25 #将断点设置在12行 (gdb)run #运行程序 Breakpoint...$ gdb gdbStep #启动调试 (gdb) b 25 #在12行设置断点 Breakpoint 1 at 0x4005d3: file gdbStep.c, line 25....当然它还有一个选项,用来设置当遇到没有调试信息的函数,s命令是否跳过该函数,而执行后面的。

    3.3K20

    Linux之GDB调试

    @TOC Linux GDB 调试 一、初识 GDB GDB 是一个开源的、功能强大的调试工具,主要用于调试 C、C++ 等语言编写的程序。...加载程序与核心转储文件 当程序崩溃并生成了核心转储文件时,可以通过以下命令启动 GDB,加载程序和核心转储文件进行调试: gdb 这可以帮助你分析程序崩溃的原因。...打印变量值 在调试过程中,可以通过以下命令打印变量的值: print 例如,打印变量 x 的值: print x GDB 会显示变量的当前值。 2....七、退出 GDB 完成调试后,可以通过以下命令退出 GDB: quit 或者: exit 八、GBD基本命令汇总 启动 GDB gdb :启动 GDB 并加载要调试的程序。...gdb :加载程序和核心转储文件进行调试。 gdb --args :加载程序并传递参数。 设置断点 break :在指定函数处设置断点。

    12810

    GDB调试汇编分析

    GDB调试汇编分析 代码 本次实践我参照了许多先做了的同学的博客,有卢肖明,高其,张梓靖同学。代码借用的是卢肖明同学的代码进行调试运行。...GCC编译 使用gcc -g gdbtest.c -o gdbtest -m32命令在64位的机器上产生32位汇编代码 在使用gdb进行调试运行时,有cgdb和gdb两种工具,我建议大家使用张梓靖同学使用的...可见此时主函数的栈基址为0xffffd068,用x(examine)指令查看内存地址中的值,但目前%esp所指堆栈内容为0,%ebp所指内容也为0 用i r指令查看各寄存器的值 依次如下指令调试汇编代码...总结反思 这次学习让我对于gdb有了更加深刻地认识,设置断点是我们在进行编写代码时在整体编译没有问题,但是却无法得到我们想要的结果时所进行分段纠错步骤,这次的实践让我对于堆栈变化了有了更加深刻的理解,在使用终端三件工具编程时...gdb调试分析汇总表 ? ?

    3.6K21

    gdb调试基础命令

    gdb调试 复习并整理gdb 1. 调试准备 被调试的程序需要生成调试符号信息,即在gcc/g++编译时加上-g选项。...启动gdb调试的方法 直接调试目标程序 gdb filename # filename为要启动的调试程序名称 attach到进程 gdb attach pid #attach到pid对应的进程 调试core...4. gdb调试多线程程序 4.1 调试多线程程序的方法 先gdb让程序跑起来,然后Ctrl+C中断程序,使用Info threads命令查看当前进程下有多少线程在运行。...5. gdb调试多进程程序 5.1 方法一 先在一个shell窗口中调试父进程,等待子进程被fork出来后,再开启另外一个shell窗口使用gdb attach命令将gdb attach到子进程上。...) 5.2 方法二 gdb调试器提供了一个follow-fork选项,通过set follow-fork mode设置一个进程fork处新的子进程时,gdb时继续调试父进程(取值parent)还是继续调试子进程

    2.1K10

    GDB 调试笔记

    GDB 是一个由 GNU 开源组织发布的 *.nix 下的、基于命令行的一款比较知名的程序调试工具。 GDB 有着相当多的命令,但是常用的只有大概十个左右。...gdb命令一般可以使用 gdb program 或者使用 gdb progrma core 。如果想对正在执行的进程进行调试,则可以使用 gdb -p 123 。...常见命令 命令 解释 示例 file 加载被调试的可执行程序文件。因为一般都在被调试程序所在目录下执行GDB,因而文本名不需要带路径。...(gdb) file gdb-sample r run的简写,运行被调试的程序。如果此前没有下过断点,则执行完整个程序;如果有断点,则程序暂停在第一个可用断点处。...(gdb) r c Continue的简写,继续执行被调试程序,直至下一个断点或程序结束。

    1.2K30

    使用gdb调试内核

    使用gdb调试内核 内核配置需要添加编译信息。...可以参考:https://blog.csdn.net/gatieme/article/details/104266966 在目标板上开启gdbserver模式(虚拟soc中加上gdb调试的选项);在host...上启动gdb客户端后连接虚拟soc提供的gdb服务(终端不会有输出),命令如下: # 启动gdb,工具链中gdb的路径,并读取符号表 # vmlinux相当于elf文件,具有符号表。...使用gdb扩展 内核通过python脚本定义了一组gdb命令,可方便其对内核的调试,如通过该脚本可以打印dmesg,percpu变量,通过pid打印其对应的task_struct结构体等。...在gdb中可以读取该文件。 # 启动gdb,工具链中gdb的路径,并读取符号表 # vmlinux相当于elf文件,具有符号表。Image文件相当于bin文件。

    2.1K50
    领券