因为有时候bug很难复现、或者环境搭建起来比较困难,所以在出现bug的时候可以使用gdb的attach功能调试正在运行的GCC编译出来的程序,注意编译选项要加-g,否则没有符号表。 调试步骤? 1. 编译时候带-g选项。 2. 运行程序。 3. ps找到进程号。 4. 启动gdb,使用attach选项,这时gdb会停止在程序的某处。 5. 按照GDB...
当然,你可以使用时间延迟的方法,在子进程fork出来之后,使用Sleep函数等待一段时间再运行,在这段时间中你使用ps找到该进程,然后使用Attach方法把该进程附加到gdb中,从而达到可以调试子进程的目的。 在一部分系统中(我使用的是基于2.6内核的CentOS,支持follow-fork和detach-on-fork模式),比如HP-UX11.x之后的版本,Linux...
即你正在调试的程序。在Python API中,通过gdb.inferiors()获取inferior列表,并使用gdb.selected_inferior...
有一种方法你可以给它发一个信号,出一个coredump文件,然后用gdb来调试coredump文件: gdb<coredump_file> 显然易见,这并不是一种很好的方式,那么有没有什么办法可以捕获进程并调试呢?你想得到的很有可能都有人实现了—— gdb python <processid> gdb attach <processid> 这两种方式都可以让gdb捕获一个进程。因...
可直接用gdb attach到1个python进程,查看其运行状态: # gdb python 11122 attach之后进入gdb,基本检查步骤如下: 查看线程 (gdb) info threads Id Target Id Frame206Thread0x7febdbfe3700(LWP124916)"python2"0x00007febe9b75413inselect () at ../sysdeps/unix/syscall-template.S:81205Thread0x7febdb7e2700(...
使用GDBattach 到 Python 进程(调试被封装的 C++/CUDA 扩展) command:pickProcess 弹出窗口,手动选择要附加调试的进程(processId) { "version": "0.2.0", "configurations": [ { "name": "Attach to Python (GDB)", "type": "cppdbg", "request": "attach", ...
基本方法:在VSCode中,使用PythonCppDebugger扩展进行跨语言调试。步骤包括在Python环境中启用调试,通过attach线程追踪Python会话的PID,并使用cpp gdb进行调试。调试过程中的注意点:动态库的编译方式:需要确保CUDA算子被编译为debug模式的动态库,以便进行调试。IDE支持:VSCode需要支持Python和C++/CUDA的调试...
针对这个问题,作者尝试了在VSCode中通过PythonCppDebugger扩展进行跨语言调试,其步骤包括:在Python环境中启用调试,通过attach线程追踪Python会话的PID,使用cpp gdb进行调试。调试过程中需要注意动态库的编译方式(debug模式),以及IDE中对Python和C++/CUDA的支持。首先,作者采用VSCode的attach功能,配合cppdbg...
上面讲了如何调试python程序的一些基础知识,接下来我们要介绍的是如何调试一个已经在运行的python程序,比如在实际工作中,写了一个python程序在运行了,然后发现程序有异常或者挂住无法响应业务了,这个时候可以用gdb attach这个进程,然后查看调用栈信息,从而可以获知目前程序挂载那个地方。
(gdb) attach<pid> 1. 2. 连接成功后,可以在GDB中设置断点,并查看变量的值: (gdb) break test.py:4 (gdb) run (gdb) print a (gdb) print b 1. 2. 3. 4. 调试操作 使用GDB attach Python进行调试时,可以执行以下常用的调试操作: 设置断点:使用break命令设置断点,如break test.py:4。