gbd命令行调试
默认情况下,GDB无法对现在发布的程序进行调试
debug(能调试)&&release(不能调试)
linux下GCC或G++生成软件默认是release的!
1.debug模式
gcc -o mytest mytest.c -g
文件的体积不一样,二进制文件中加了一些debug内容
readelf -S mytest //查看可执行程序二进制格式
2.gdb调试常用指令
gdb mytest
start 代码运行到main函数
- l 查看代码
- l 0 从第一行开始显示,回车显示下面的代码
- break(b) 行号 在该行打断点
- info b 查看断点信息
- d 断点号 去掉该断点vscode调试快捷键: F5(开始调试) ctrl+F5(开始执行不调试)shift+F5(取消)
- run(r) 执行程序到断点处
- next (n) 相当于F10逐过程不进入函数内执行
- step(s) 相当于F11逐语句 进入函数内执行
- contine(c) 从一个断点到另一个断点
- bt 查看当前的堆栈(函数调用的过程)
- finish 直接跑完这个函数(针对性的跑一个一个的函数)
- p 参数名 查看当前参数的值
- p &参数名 查看当前参数的地址
- display 参数 常显示当前参数的值
- undisplay 参数序号 不显示盖序号的参数
- until 行号 跳转至指定行
- set var 参数=值 将参数改写成指定的值
- info locals 显示局部变量信息
- disable breakpoints 断点序号 禁用该断点
- enable breakpoints 断点序号 启用该断点
- help [command] 帮助
3.gbd多进程调试
set follow-fork-mode child/parent //选择父或子进程
set detach-on-fork off //默认为on,在输入set follow-fork-mode child/parent后,再输入这个info inferiors,就可以父子进程一起调试,但是一次只能调一个进程,进程的切换要执行下面命令
info inferiors
inferiors Num //就可以选择要调试的进程了。
4.gbd多线程调试
info thread 查看程序中有几个线程
thread Id 切换线程
输入next的时候,别的线程并不受影响,会直接执行
如果只想让给定的线程执行
set scheduler-locking on/off //on就可以单独的运行了,不会受影响的一直运行。
还能设置指定线程的断点(要在产生线程的时候再打)
break location thread id或者( b 行号 thread id)
5.git操作
- git clone 网址
- git add .将本地文件放到本地仓库中.git
- git commit -m '日志' //这里日志必须有(git commit -m '好好写日志')//这里还是本地操作
- git push 提交到网上
- git log //查看上传日至
- git status //查看状态
对于git文件改名字,使用git mv
如果远端的代码改了,本地的也改了,再push会出现冲突。
这时 git pull //将远端代码拉到本地,再git push
git rm 文件名 //删除文件
对于第一次上传时,会出现
就是要告诉git你的身份信息,分别执行
git config --global user.name "写你名字" git config --global user.emal "写你邮箱"
然后就可以上传了!