gdb/gcc/makefile
GoRustNeverStop
这个作者很懒,什么都没留下…
展开
-
Nginx脚本中的DESTDIR变量
在较新版本的nginx的auto目录下的install文件中,原创 2014-08-27 11:40:14 · 1673 阅读 · 0 评论 -
Linux中gcc,g++常用编译选项
gcc/g++ 在执行编译时,需要4步 1.预处理,生成.i的文件[使用-E参数] 2.将预处理后的文件不转换成汇编语言,生成文件.s[使用-S参数] 3.有汇编变为目标代码(机器代码)生成.o的文件[使用-c参数] 4.连接目标代码,生成可执行程序[使用-o参数] -x language filename 设定文件所使用的语言,使转载 2016-11-28 13:59:47 · 5484 阅读 · 0 评论 -
GDB详解
GDB详解1 简介2 生成调试信息3 启动GDB 的方法4 程序运行上下文 4.1 程序运行参数 4.2 工作目录 4.3 程序的输入输出5 设置断点 5.1 简单断点 5.2 多文件设置断点 5.3 查询所有断点6 观察点7 条件断点8 维护停止点9 为停止点设定运行命令10 调试代码转载 2017-05-19 11:36:47 · 354 阅读 · 0 评论 -
GDB 使用详解-----转载
很优秀的文章但不知哪位大神所写,多谢这位大神!一、初始化输入gdb进入gdb调试环境。或者直接输入gdb + progfile来加载文件。注意该文件是使用gcc(或g++)编译得到的。为了使 gdb 正常工作, 必须使你的程序在编译时包含调试信息,编译时必须使用-g参数来。或者进入gdb环境后,通过命令file + progfile来加载需要调试的可转载 2017-05-19 11:40:00 · 2303 阅读 · 0 评论 -
静态库的链接顺序
今天工作中遇到了一个很诡异的问题:项目中, a.c和b.c编译出的obj先打包成静态库c.a, 再和另外一个d.a以及main.c编译出的obj链接成最后的bin文件. a.c中有private_init()和private_read()两个函数, 其中private_init()是个空函数, private_read()则在d.a中被调用.出现的现象是这样: 如果我main.c中转载 2017-07-27 09:37:07 · 5183 阅读 · 0 评论 -
makefile中的shell语法
在Makefile中写shell代码有点诡异,和不同的shell语法不太一样,如果不了解,看Makefile会莫名其妙。下面总结了一些。Makefile本质上来讲也是shell脚本,即每条command都是shell进程,运行完shell进程都会退出假如/root#test:gcc -c main.c -o main.o gcc -c a.c -o a.o转载 2017-07-28 11:18:08 · 530 阅读 · 0 评论 -
Linux下动态库(.so)和静态库(.a)
Linux下有两种库:动态库和静态库(共享库)二者的不同点在于代码被载入的时刻不同。静态库的代码在编译过程中已经被载入可执行程序,因此体积比较大。动态库(共享库)的代码在可执行程序运行时才载入内存,在编译过程中仅简单的引用,因此代码体积比较小。不同的应用程序如果调用相同的库,那么在内存中只需要有一份该动态库(共享库)的实例。静态库和动态库的最大区别,静态情况转载 2017-07-28 11:29:19 · 709 阅读 · 0 评论 -
线上服务CPU100%问题快速定位实战
功能问题,通过日志,单步调试相对比较好定位。 性能问题,例如线上服务器CPU100%,如何找到相关服务,如何定位问题代码,更考验技术人的功底。 58到家架构部,运维部,58速运技术部联合进行了一次线上服务CPU问题排查实战演练,同学们反馈有收获,特将实战演练的试题和答案公布出来,希望对大家也有帮助。 题目某服务器上部署了若干tomcat实例,转载 2017-09-13 17:42:23 · 3042 阅读 · 0 评论 -
linux 编译 'aclocal-1.14' is missing on your system
centos编译出现:类似情况: $tar -xvf libpcap-1.0.0.tar.gz $cd libpcap-1.0.0.tar.gz $./configure $make $sudo make install 5.'aclocal-1.14' is missing on your system. You转载 2017-09-27 17:42:43 · 7363 阅读 · 0 评论 -
环境变量,include搜索路径,lib库搜索路径
环境变量系统环境变量我们知道,我们经常要设置一些环境变量,系统环境变量我们非常容易理解。其实我们在windows中经常容易接触。其实环境变量是一个非常广泛的一个概念,它与web应用程序中的web.config所处的角色很像。什么意思呢?就是说,程序(系统或应用)要运行的时候,它的基本业务逻辑可能是一定的,但是实现业务逻辑的时候有些设置性的东西却可以改变程序很多。如web应用程序,编转载 2017-09-30 11:38:11 · 9026 阅读 · 0 评论 -
gdb调试多线程程序总结
阿里核心系统团队博客http://csrd.aliapp.com/?tag=pstack 多线程调试必杀技 - GDB的non-stop模式Linux下多线程查看工具(pstree、ps、pstack)http://www.cnblogs.com/aixingfou/archive/2011/07/28/2119875.htmlhtt转载 2017-12-22 10:04:04 · 744 阅读 · 0 评论 -
利用GDB调试多线程core文件
在linux下程序崩溃时,一般会在指定目录下生成一个core文件。core文件仅仅是一个内存映象(同时加上调试信息),主要是用来调试的,接下来我们通过一个案例观察怎么利用GDB调试core文件。在命令行中键入 gdb : 进入gdb命令行中: 键入 bt 可以查看程序终止线程的堆栈: 但是有时错误不是发生在这个堆栈上。键入 info threads转载 2017-12-18 20:52:40 · 685 阅读 · 0 评论 -
造成segment fault,产生core dump的可能原因!
文章摘自网络,暂存学习,原地址为:http://www.cnblogs.com/justacoder/archive/2010/04/14/segmentation_fault.html和http://blog.chinaunix.net/uid-24347760-id-1989555.html一 造成segment fault,产生core dump的可能原因1.内存访问越界 a) 由于使用错误...转载 2018-02-27 09:12:59 · 28600 阅读 · 0 评论 -
GDB常用调试命令以及多进程多线程调试
GDB常用调试命令以及多进程多线程调试今天把所有的GDB常用的调试命令都过了一遍,尤其是多线程调试。所以先做个总结,以免忘记。以后如果有新的有用的命令会继续追加。 本文地址:(LYanger的博客:http://blog.csdn.net/freeelinux/article/details/53700266)一:普通命令1.list命令list linenum 显示程序第lin...转载 2018-04-02 15:31:27 · 556 阅读 · 0 评论 -
后台执行的程序通过system()调用ffmpeg卡住 解决办法
问题描述:后台执行的程序通过system()调用ffmpeg卡住了。执行方式 ./app & 程序中使用system函数调用ffmpeg去转码,命令没有问题,单独执行通过,调用的都是全路径。看屏幕输出的信息,ffmpeg打印完版本后就卡住了。解决办法:通过nohup启动ffmpeg命令,如下:nohup $Command $Args >/dev/null 2原创 2016-09-29 20:56:28 · 7150 阅读 · 3 评论 -
gdb调试多进程和多线程命令
1. 默认设置下,在调试多进程程序时GDB只会调试主进程。但是GDB(>V7.0)支持多进程的分别以及同时调试,换句话说,GDB可以同时调试多个程序。只需要设置follow-fork-mode(默认值:parent)和detach-on-fork(默认值:on)即可。 follow-fork-mode detach-on-fork 说明parent转载 2016-08-30 23:48:17 · 410 阅读 · 0 评论 -
一个通用的makefile写法,自动推导文件的依赖关系【转】
今天看了一天的makefile的写法,东拼西凑,好不容易写出了一个makefile,颇有成就感,记录下来,以备温习之用。 假设有两个头文件目录 header1,header2;两个cpp文件目录,src1,src2,一个lib目录 写一个完整的makefile步骤如下:1 定义可执行文件的名称 TARGET = MyPro原创 2015-01-06 22:16:31 · 2014 阅读 · 0 评论 -
makefile自动推导规则
现在我们的Makefile写成这样:all: mainmain: main.o stack.o maze.o gcc $^ -o [email protected]: main.h stack.h maze.hstack.o: stack.h main.hmaze.o: maze.h main.hclean: -rm main *.o.PHONY: clean按照惯例,用all做原创 2015-01-06 23:31:52 · 2437 阅读 · 0 评论 -
gcc编译选项
gcc提供了大量的警告选项,对代码中可能存在的问题提出警告,通常可以使用-Wall来开启以下警告: -Waddress -Warray-bounds (only with -O2) -Wc++0x-compat -Wchar-subscripts -Wimplicit-int -Wimplicit-function-declaration原创 2015-01-10 01:16:56 · 712 阅读 · 0 评论 -
GDB调试多线程程序(总结)
一、基本命令(gdb)info threads 显示当前可调试的所有线程,每个线程会有一个GDB为其分配的ID,后面操作线程的时候会用到这个ID。 前面有*的是当前调试的线程。(gdb)thread ID 切换当前调试的线程为指定ID的线程。(gdb)thread apply ID1 ID2 command 让一个或者多个线程执行GDB命令com原创 2015-02-11 21:42:08 · 2003 阅读 · 0 评论 -
Makefile通用模板
假设目录结构如下src |-------include |-------Makefile============================CC=gccCXX=g++CFLAGS=-IincludeCXXFLAGS=-IincludeLDFLAGS=-lpthread -lrt -lmSRCDIRS=srcOBJP原创 2016-04-01 10:42:56 · 828 阅读 · 0 评论 -
gdb 多线程调试
http://hi.baidu.com/hcq11/blog/item/9f5bfc6e696209d680cb4a25.html http://hi.baidu.com/litto/blog/item/759389dd198111375882dd1e.html http://blogold.chinaunix.net/u3/94700/showart_2389432.html转载 2016-06-29 14:14:41 · 968 阅读 · 0 评论 -
gdb调试多进程和多线程命令
1. 默认设置下,在调试多进程程序时GDB只会调试主进程。但是GDB(>V7.0)支持多进程的分别以及同时调试,换句话说,GDB可以同时调试多个程序。只需要设置follow-fork-mode(默认值:parent)和detach-on-fork(默认值:on)即可。 follow-fork-mode detach-on-fork 说明parent转载 2016-07-13 08:49:55 · 635 阅读 · 0 评论 -
gdb调试带参数程序
一般来说GDB主要调试的是C/C++的程序。要调试C/C++的程序,首先在编译时,我们必须要 把调试信息加到可执行文件中。使用编译 器(cc/gcc/g++)的 -g 参数可以做到这一点。如: > cc -g hello.c -o hello > g++ -g hello.cpp -o hello 如果没有-g,你将看不见程序的函数名、变量名,所代替的全是 运行时的内存地址转载 2016-06-20 09:17:37 · 457 阅读 · 0 评论 -
How do UNIX linkers work with archive libraries?
How do UNIX linkers work with archive libraries, and why the order of objects and libraries on the link line matters.I originally wrote this article in 2001 in gnu.gcc.help.Here is a link to i转载 2016-09-09 14:57:13 · 385 阅读 · 0 评论 -
Gdb调试多进程程序
Gdb调试多进程程序程序经常使用fork/exec创建多进程程序。多进程程序有自己独立的地址空间,这是多进程调试首要注意的地方。Gdb功能强大,对调试多线程提供很多支持。方法1:调试多进程最土的办法:attach pidAttach是调试进程的常用办法,只要有可执行程序以及相应PID,即可工作。当然,为方便调试,可以在进程启动后,设定sleep一段时间,如30s,这样即可有充足转载 2016-08-30 00:35:45 · 1944 阅读 · 0 评论 -
利用GDB进行多线程调试
一、多线程调试多线程调试重要就是下面几个命令:info thread 查看当前进程的线程。 thread 切换调试的线程为指定ID的线程。 break file.c:100 thread all 在file.c文件第100行处为所有经过这里的线程设置断点。 set scheduler-locking off|on|step,这个是问得最多的。在使用step或者continue命转载 2016-08-30 23:37:39 · 11030 阅读 · 0 评论 -
gdb 跟踪调试命令整理
内容源自于陈浩CSDN博客的用GDB调试程序一系列文章用GDB调试程序(一)用GDB调试程序(二)用GDB调试程序(三)用GDB调试程序(四)用GDB调试程序(五)用GDB调试程序(六)用GDB调试程序(七) GDB 调试要进行调试程序首先要生成一个含有调试信息的执行程序命令如下:gcc(g++) -g -o 文件名 源文件.c(源文件.cpp)gcc(g+转载 2016-08-30 23:43:52 · 8163 阅读 · 0 评论 -
gdb 多线程调试
gdb 多线程调试http://hi.baidu.com/hcq11/blog/item/9f5bfc6e696209d680cb4a25.html http://hi.baidu.com/litto/blog/item/759389dd198111375882dd1e.html http://blogold.chinaunix.net/u3/94700/showart_23894转载 2016-08-30 23:47:23 · 365 阅读 · 0 评论 -
gdb调试多进程与多线程
一,gdb的基础知识1>介绍: gdb是Linux环境下的代码调试工具。 2>使用:需要在源代码生成的时候加上 -g 选项. 3>开始使用: gdb binFile 4>退出:ctrl + d 或 quit 5>调试过程中的常用命令: list/l 行号:显示binFile源代码,接着上次的位置往下列,每次列10行。 list/l 函数名:列出某个函数的源代...转载 2018-04-02 16:12:47 · 504 阅读 · 0 评论