DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

随笔分类 -  gcc/g++/gdb

上一页 1 2 3 4 下一页

摘要:GDB是什么 调试程序 程序中出现的语法错误可以借助编译器解决;但逻辑错误则只能靠自己解决。实际场景中解决逻辑错误最高效的方法,就是借助调试工具对程序进行调试。 所谓调试(Debug),就是让代码一步一步慢慢执行,跟踪程序的运行过程。比如,可以让程序停在某个地方,查看当前所有变量的值,或者内存中的数 阅读全文
posted @ 2022-04-26 17:56 DoubleLi 阅读(1015) 评论(0) 推荐(1) 编辑

摘要:本文主要参考自:http://www.cnblogs.com/zzx1045917067/archive/2012/12/26/2834310.html,进行了一点补充和编排;Core dump部分参考了:http://blog.ddup.us/?p=176。 gdb是一个在UNIX环境下的命令行调 阅读全文
posted @ 2022-04-26 17:52 DoubleLi 阅读(652) 评论(0) 推荐(1) 编辑

摘要:今天用gdb查看core文件,发现找不到源文件。记录一下相关命令 在gdb里面查看源码, list 一下提醒找不到相关文件,列出来的是绝对路径的完整文件名。 help files 看一下帮助,可以加载符号,源文件等,自己看一下。 dir 设置源码路径无效,show directories 看到设置成 阅读全文
posted @ 2022-03-15 14:58 DoubleLi 阅读(200) 评论(0) 推荐(0) 编辑

摘要:如果你手头上有一个你自己或者别人开发的程序,但它有一些bug。或者你只是想知道这个程序是如何工作的。怎么办呢?你需要一个调试工具。 现在很少有人会直接对着汇编指令进行调试,通常情况下,大家都希望能对照着源代码进行调试。但是,你调试使用的主机,一般来说并不是构建程序的那台,因此你会看到如下这个令人沮丧 阅读全文
posted @ 2022-03-15 14:51 DoubleLi 阅读(776) 评论(0) 推荐(0) 编辑

摘要:有的时候一个程序不是在同一个机器上执行的,当调试的时候就可能无法找到源代码的路径, 这时就需要使用下面的方法了: 当gdb程序找不到源码时,进行重新设置源码路径步骤: (1). 使用如下命令查看目标文件中保存的是相对路径还是绝对路径readelf -p .debug_str target_bin_f 阅读全文
posted @ 2022-03-15 14:42 DoubleLi 阅读(1620) 评论(0) 推荐(0) 编辑

摘要:在gdb程序的时候,有时候会发现源代码文件找不到,对于那些带调试信息的系统库或者第三方库,很多时候当你真正想gdb去追他源代码的时候你会发现gdb根本找不到这些源代码路径。这个时候有两种选择: 【1】如果gdb这个时候告诉你找不到这个带调试信息库的源文件路径,此时给出的路径地址是绝对路径,比如 /h 阅读全文
posted @ 2022-03-15 14:30 DoubleLi 阅读(1503) 评论(0) 推荐(0) 编辑

摘要:使用gdb调试程序时,执行gdb 可执行程序 程序进程号 报错: 解决方案: gdb -iex 'set auto-load safe-path /' 可执行程序 程序进程号 阅读全文
posted @ 2022-03-15 14:27 DoubleLi 阅读(186) 评论(0) 推荐(0) 编辑

摘要:最近调试的时候遇到一个问题,系统中安装的curl版本和调试程序依赖的curl版本不一致,编译时在Makefile里用gcc -L指定了libcurl的路径能够顺利编译,但是gdb启动程序时报错,依赖的curl动态库版本与加载的不一致,加载失败。 查阅资料发现,在osx上加载动态库的顺序是先搜索DYL 阅读全文
posted @ 2022-03-15 11:57 DoubleLi 阅读(343) 评论(0) 推荐(0) 编辑

摘要:笔记: 当GDB无法显示so动态库的信息或者显示信息有误时,通常是由于库搜索路径错误导致的,可使用set sysroot、set solib-absolute-prefix、set solib-search-path来指定库搜索路径。 1. set sysroot 与 set solib-absol 阅读全文
posted @ 2022-03-15 11:43 DoubleLi 阅读(530) 评论(0) 推荐(0) 编辑

摘要:有时会遇到一种很特殊的调试需求,对当前正在运行的其它进程进行调试(正是我今天遇到的情形)。这种情况有可能发生在那些无法直接在调试器中运行的进程身上,例如有的进程 只能在系统启动时运行。另外如果需要对进程产生的子进程进行调试的话,也只能采用这种方式。GDB可以对正在执行的程序进行调度,它允许开发人员中 阅读全文
posted @ 2021-07-02 10:20 DoubleLi 阅读(1318) 评论(0) 推荐(0) 编辑

摘要:用GDB调试程序(完全手册) http://blog.chinaunix.net/u2/87718/showart_1726531.html 查看源程序一、显示源代码 GDB 可以打印出所调试程序的源代码,当然,在程序编译时一定要加上-g的参数,把源程序信息编译到执行文件中。不然就看不到源程序了。当 阅读全文
posted @ 2021-07-02 10:17 DoubleLi 阅读(745) 评论(0) 推荐(0) 编辑

摘要:多进程调试 我们使用gdb调试程序,gdb的调试默认是调试父进程的,如果要做到对父进程和子进程都做到调试,所以附加了调试子进程的功能。 设置条件 如果让gdb可以同时调试多个程序,只需要设置follow-fork-mode(默认:parent)和detach-on-fork(默认:on)就好了。 f 阅读全文
posted @ 2021-05-08 18:08 DoubleLi 阅读(257) 评论(0) 推荐(0) 编辑

摘要:在进入gdb后设置,执行下面语句 handle SIGSEGV nopass handle SIGSEGV nostop 执行程序,触发问题,gdb侧执行c 故障出现时,执行bt,显示堆栈调用。 阅读全文
posted @ 2021-05-08 17:44 DoubleLi 阅读(159) 评论(0) 推荐(0) 编辑

摘要:看到一个非常好的介绍coredump的文章,做个记录, 参考链接: https://blog.csdn.net/sunxiaopengsun/article/details/72974548 什么是coredump Coredump叫做核心转储,它是进程运行时在突然崩溃的那一刻的一个内存快照。操作系 阅读全文
posted @ 2021-01-22 10:27 DoubleLi 阅读(755) 评论(0) 推荐(0) 编辑

摘要:目录 目录 1 前言 1 方法 1 附1:链接静态库的顺序问题 2 附2:再议GCC编译时的静态库依赖次顺问题 3 附3:gcc链接参数--whole-archive的作用 4 附4:让有些“-l”链接静态库,而另一些链接共享库? 6 附5:相关博文 6 前言 C/C++程序的许多同学被静态库的依赖 阅读全文
posted @ 2020-10-13 14:05 DoubleLi 阅读(837) 评论(0) 推荐(0) 编辑

摘要:gcc/g++链接时.o文件以及库的顺序问题 1 写在前面 最近换了xubuntu12.4,把原来的项目co出来编译的时候报“undefined reference to”。猜测是gcc的版本问题,用-v跟踪一下,发现gcc-4.6默认开 启了ld的–as-needed选项。关闭该选项(–no-as 阅读全文
posted @ 2020-10-13 13:57 DoubleLi 阅读(823) 评论(0) 推荐(0) 编辑

摘要:解决两个静态库之间相互依赖的问题 两个静态库之间相互依赖:在静态库liba.a中声明了某些函数,但是实现在libb.a中,此时a库依赖于b库;然后在静态库中libb.a中,某些结构体或者变量在liba.a中声明的,此时b库依赖于a库。 然后链接的时候,会出现两个库之间的相互依赖问题。链接涉及到顺序问 阅读全文
posted @ 2020-10-13 13:56 DoubleLi 阅读(3369) 评论(0) 推荐(0) 编辑

摘要:LD_LIBS += -lc -lfreetype -ltde -ljpge -lz -ljpeg -lplayer -lsubdec RLDFLAGS += -Wl,--start-group \ -lpthread $(LD_LIBS) -Wl,--end-group 在相互依赖的库间加上 -W 阅读全文
posted @ 2020-10-13 13:50 DoubleLi 阅读(1136) 评论(0) 推荐(0) 编辑

摘要:Linux GCC中,如果lib a依赖b,b又依赖a,链接的时候无论a放在前,还是b放在前,都会提示unrefrence。 解决办法就是: 链接的时候a链接两次,即: -la -lb -la 阅读全文
posted @ 2020-10-13 13:49 DoubleLi 阅读(936) 评论(0) 推荐(0) 编辑

摘要:link时,若liba.a依赖libb.a,若这样写 -lb -la,则链接通不过,gcc有个选项:-Xlinker ,可以让gcc在链接时反复查找依赖库,用法 : gcc -shared -o libxx.so xx.o -L. -Xlinker "-(" -lb -la "-)" -Xlinke 阅读全文
posted @ 2020-10-13 13:46 DoubleLi 阅读(778) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 下一页