C与C++区别 makefile文件 gdb调试 您所在的位置:网站首页 安装gdb C与C++区别 makefile文件 gdb调试

C与C++区别 makefile文件 gdb调试

2023-06-22 04:47| 来源: 网络整理| 查看: 265

C与C++区别

 

gcc  .cpp -> c++语法 编译  不能链接c++库

         .c ->c语法

g++    .cpp   都通过c++语法编译

            .c

预编译   编译  汇编  链接(《程序员自我修养》中有总结)

预编译

gcc -E  main.c   -o  mian.i    

删除注释,进行宏替换,增加行号及文件名标识,处理所有条件的预编译指令,保留所有的#pragma指令

编译 

gcc -S main.i  -o  main.s

将预处理完的文件进行一些列的词法、语法、语义分析及优化生成汇编代码

汇编 

gcc -c  main.s  -o  main.o

汇编器将所有的汇编代码转化为汇编指令

gcc  -o  main  main.o

生成可执行程序

linux 可执行程序格式  ELF 格式

windows 可执行程序格式 PE  格式

机器指令  101001

汇编代码   mov

高级语言c/c++

linux虚拟地址空间相关面试题   在《c专家编程》5 6 7章   《 程序员自我修养》

makefile

makefile文件   管理工程 实现自动化编译

add.c  max.c  main.c

all: main   最终生成的程序 main: main.o max.o add.o       依赖关系        gcc -o  main main.o max.o add.o   生成规则 main.o:main.c         gcc -c  main.c max.o:max.c        gcc -c max.c add.o:add.c        gcc-c  add.c gdb

l  显示代码

b 加断点

info break    查看断点信息

delete+断点编号         删除断点

r             运行程序

n           单步执行

p           打印

s         进入函数

finish    退出函数

c         继续执行

display     连续打印

bt       显示函数栈调用信息

多进程调试

(gdb) attach +pid   添加调试进程

set  follow-fork-mode   child/parent        设置跟踪子进程或父进程

多线程调试

info threads -  显示可以调试的线程

thread id   切换到指定线程

set scheduler-locker-locking    off  on   step  

off  不锁定,所有线程都可以执行

on  锁定   只有当前线程可以执行

step  单步执行时只有当前线程执行

core 调试

如何检测内存泄漏

程序崩溃时  生成core文件  -》快速找到出错的地方

所程序是逻辑错误,没有崩溃core找不到

ulimit -a 可以查看core文件   0表示未开启

ulimit -c +size  设置core文件大小上限

strace 跟踪系统调用

ltrace 跟踪库函数

内存检测工具有什么



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有