![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Debug
DmrForever
这个作者很懒,什么都没留下…
展开
-
python使用ctypes调用c程序
ctypes地址截断问题在使用ctypes开发python调用c程序的接口函数时,需要在python程序和c程序之间传递地址,不管是堆上的地址还是栈上的地址,如果没有设置函数的restype和argtypes时,很可能会引起Segment Fault错误。这是因为在默认情况下,地址可能会被截断,导致访问地址时,访问到错误的地址,出现Segment Fault。解决方法在每个需要传递地址的地方,设置restype和argstype:如:myfunc.restype = ctypes.c_uint6原创 2022-05-21 12:55:47 · 761 阅读 · 0 评论 -
内存检测及调试工具
rr出自Mozilla的另一款调试C系程序的利器,rr是Record and Replay。用于保存程序运行的环境,不停的重放调试。valgrind一款内存检测工具。Address sanitizerAddress sanitizer是一款内存检测工具, 相比Valgrind效率更高。cmake中使用Address sanitizer在cmakelist.txt 文件中添加:set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -fno-om原创 2022-05-21 12:53:24 · 556 阅读 · 0 评论 -
gdb调试core文件
我在调试程序时,遇到了一种情况:在debug方式下执行程序没有问题,但是在运行模式下出现了段错误。使用下面的调试方式,使用gdb调试程序崩溃后生成core文件,成功找到报错位置。程序生成core文件# 设置(临时在当前terminal中设置)ulimit -c unlimited# 查看ulimit -a设置core文件生成目录sysctl -w kernel.core_pattern=/var/crash/core.%u.%e.%p此命令将coredump文件缺省会保存至/var/c原创 2022-05-21 12:52:10 · 1874 阅读 · 0 评论