DoubleLi

qq: 517712484 wx: ldbgliet

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

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

1 2 3 4 下一页

摘要:使用 GCC 进行 C/C++ 代码编译时,如果代码中使用到了库函数,需要使用 -l 选项指定该库函数所在的库。如:-lm、-lrt、-lpthread等。这种方式使用的是库的缩写。一个库的文件名如果是:libxxx.so 或 libxxx.a,则可以使用 -lxxx 进行链接。这种规则很常见,但是 阅读全文
posted @ 2023-12-05 15:14 DoubleLi 阅读(44) 评论(0) 推荐(0) 编辑

摘要:比如我们用gcc 9.3.0编译程序,但需要发布的机器gcc版本是4.8.5,怎么办? 你可能想到如下方法 静态编译 容器发布 打包依赖的so,使用本地so运行程序 1.静态编译 将libc和libstdc++静态编译,编译时带上如下参数。 g++ -static-libgcc -static-li 阅读全文
posted @ 2023-12-01 15:33 DoubleLi 阅读(308) 评论(0) 推荐(0) 编辑

摘要:要拉取指定版本的代码,可以使用 Git 的 checkout 命令。以下是具体步骤: 1.首先,使用 git log 命令查找要拉取的版本的 commit ID(或 Hash)。例如,如果要拉取某个项目的 v1.0 版本,可以使用以下命令查找对应的 commit ID: git log --onel 阅读全文
posted @ 2023-08-14 14:27 DoubleLi 阅读(2682) 评论(0) 推荐(0) 编辑

摘要:存在程序main通过dlopen使用libA中的符号: main.c: 1 #include <stdio.h> 2 #include <dlfcn.h> 3 4 typedef void (*func)(void); 5 6 7 void test_main() 8 { 9 return;10 } 阅读全文
posted @ 2023-07-21 17:45 DoubleLi 阅读(118) 评论(0) 推荐(0) 编辑

摘要:引言 编译器是我们开发人员与机器指令之间的翻译,现在编译器越来越优化,而且基于一些开源的编译器项目(gcc,clang)等,相继出现不同platform下的编译器。此外,各种芯片、开发板层出不穷,各个商业公司都针对自己出产的开发板定制特定的编译链条。例如华为hisi系列的himix100中提供的编译 阅读全文
posted @ 2023-07-20 11:41 DoubleLi 阅读(156) 评论(0) 推荐(0) 编辑

摘要:Date: 2018.9.8 1、参考 https://www.cnblogs.com/islandscape/p/3444122.htmlhttps://blog.csdn.net/chdhust/article/details/8462414https://gcc.gnu.org/onlined 阅读全文
posted @ 2023-07-19 19:55 DoubleLi 阅读(43) 评论(0) 推荐(0) 编辑

摘要:omit-frame-pointer 开启该选项,主要是用于去掉所有函数SFP(Stack Frame Pointer)的,即在函数调用时不保存栈帧指针SFP,代价是不能通过backtrace进行调试根据堆栈信息了。通过去掉SFP,可以提高程序运行速度,达到优化程序的目的。如果要打开栈指针,使用 - 阅读全文
posted @ 2023-07-19 18:25 DoubleLi 阅读(327) 评论(0) 推荐(0) 编辑

摘要:1. start-group 编译选项 假设程序x依赖三个静态库:libX1.a、libX2.a和libX3.a,而libX2.a又依赖libX1.a,libX3.a依赖libX2.a和libX1.a,正常情况下的CMakeLists.txt格式如下 target_link_libraries( x 阅读全文
posted @ 2023-07-19 15:40 DoubleLi 阅读(331) 评论(0) 推荐(0) 编辑

摘要:GDB多进程调试 (一)多线程调试命令 (1)调试父进程:set follow-fork-mode parent (缺省值,即默认) (2)调试子进程:set follow-fork-mode child (3)设置调试模式:set detach-on-fork [on | off] (缺省值on) 阅读全文
posted @ 2023-04-21 11:16 DoubleLi 阅读(107) 评论(0) 推荐(0) 编辑

摘要:多线程调试 (一)多线程调试命令 shell的命令: (1)查看当前运行的进程:ps aux | grep book (2)查看当前运行的轻量级进程:ps -aL | grep book (3)查看主线程和子线程的关系:pstree -p 主线程id gdb的命令: (1)查看可切换调试的线程:in 阅读全文
posted @ 2023-04-21 11:02 DoubleLi 阅读(286) 评论(0) 推荐(0) 编辑

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

摘要:一、core文件 当程序运行过程中出现Segmentation fault (core dumped)错误时,程序停止运行,并产生core文件。core文件是程序运行状态的内存映象。使用gdb调试core文件,可以帮助我们快速定位程序出现段错误的位置。当然,可执行程序编译时应加上-g编译选项,生成调 阅读全文
posted @ 2023-04-21 10:11 DoubleLi 阅读(634) 评论(0) 推荐(0) 编辑

摘要:当程序因某种异常停止运行时,我们要做的就是找到程序停止的具体位置,分析导致程序停止的原因。对于 C、C++ 程序而言,异常往往出现在某个函数体内,例如 main() 主函数、调用的系统库函数或者自定义的函数等。要知道,程序中每个被调用的函数在执行时,都会生成一些必要的信息,包括: 函数调用发生在程序 阅读全文
posted @ 2023-04-18 19:19 DoubleLi 阅读(490) 评论(0) 推荐(0) 编辑

摘要:gdb 调试技巧:定位程序卡死问题 最近遇到一个程序卡死的问题,借助 gdb 轻松定位,供大家参考。 遇到程序卡死不退处,可能不知道卡死在什么地方,如果程序非常简单,也许 printf 大法就可以很快定位。但是对于大型程序,尤其是一些框架程序,printf 大法可能就力不从心了。 实际的程序很复杂, 阅读全文
posted @ 2023-04-18 19:07 DoubleLi 阅读(348) 评论(0) 推荐(0) 编辑

摘要:目录 一、GCC警告选项 开启和关闭告警方法 批量开启告警(即-Wall和-Wextra 批量开启的告警) 将告警转为错误 其他告警项 作用顺序和覆盖 二、GCC编译选项 GCC常用选项 优化项|优化等级 其他项 标准Standard C options C++ options 参考原文:https 阅读全文
posted @ 2022-10-26 16:15 DoubleLi 阅读(1968) 评论(0) 推荐(0) 编辑

摘要:今天get到一个在linux下gdb调试程序的技巧和大家分享一下!平时我们利用gcc进行编程,进行程序调试时,观察程序的跳转等不是这么直观。都是入下的界面! 但是如果我们在编译连接时上加了-g命令生成的可执行文件,用gdb -tui -q p2psrv(要debug的命令),就可以进入一个类似的可视 阅读全文
posted @ 2022-06-15 11:20 DoubleLi 阅读(566) 评论(0) 推荐(0) 编辑

摘要:GDB 概述 GDB 是 GNU 开源组织发布的一个强大的 UNIX 下的程序调试工具。也许大多数开发人员比较喜欢那种图形界面方式的,像 VC 、 BCB 等 IDE 的调试,但如果你是在 UNIX 平台下做软件开发,你会发现 GDB 这个调试工具有比 VC 、 BCB 的图形化调试器更强大的功能。 阅读全文
posted @ 2022-06-15 11:11 DoubleLi 阅读(404) 评论(0) 推荐(0) 编辑

摘要:原文链接 使用GDB 要调试C/C++的程序,在编译时,使用编译器(cc/gcc/g++)的 -g 参数把调试信息加到可执行文件中。启动GDB的方法: gdb <program> : 用gdb调试可执行文件。 gdb <program> core : 用gdb调试coredump。 gdb <pro 阅读全文
posted @ 2022-06-14 18:24 DoubleLi 阅读(416) 评论(0) 推荐(0) 编辑

摘要:问题现象 gdb调试core文件或进程时,出现加载so库符号失败,错误信息如下 warning: Could not load shared library symbols for ../libadd.so Do you need "set solib-search-path" or "set sy 阅读全文
posted @ 2022-06-14 17:27 DoubleLi 阅读(1522) 评论(0) 推荐(0) 编辑

摘要:1. 概述 ​ GDB 全称“GNU symbolic debugger”,从名称上不难看出,它诞生于 GNU 计划(同时诞生的还有 GCC、Emacs 等),是 Linux 下常用的程序调试器。发展至今,GDB 已经迭代了诸多个版本,当下的 GDB 支持调试多种编程语言编写的程序,包括 C、C++ 阅读全文
posted @ 2022-04-26 17:57 DoubleLi 阅读(660) 评论(0) 推荐(0) 编辑

1 2 3 4 下一页