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

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 跟踪库函数

内存检测工具有什么

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值