ubuntu 写c/c++如何调试?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ubuntu 写c/c++如何调试?相关的知识,希望对你有一定的参考价值。
Linux下可以使用GDB调试C/C++程序。要调试C/C++程序,首先在编译时,我们必须要把调试信息加到可执行文件中。使用编译器(cc/gcc/g++)的-g 参数可以做到这一点,如:
$ cc –g hello.c –o hello
$ g++ -g hello.cpp –o hello
启动GDB 的方法有以下几种:
1、gdb <program>
program 也就是你的执行文件,一般在当前目录下。
2、gdb <program> core
用gdb 同时调试一个运行程序和core 文件,core 是程序非法执行后core dump 后产生
的文件。
3、gdb <program> <PID>
如果你的程序是一个服务程序,那么你可以指定这个服务程序运行时的进程ID。gdb
会自动attach 上去,并调试它。program 应该在PATH 环境变量中搜索到。 参考技术A 命令行可以用gcc和g++,也可以装个Code::Blocks的IDE。追问
用g++如何调试啊!不是运行啊,说清楚一些,谢谢!
追答在terminal中执行g++ a.cpp就行了啊。建议你多运用google吧。
追问汗,我想要那种像断言那样的效果!它有没有?
追答断言不是你自己写在程序中的吗?
本回答被提问者采纳 参考技术B 最好在百度文库看看书什么都会了
那时候大家再交流
ubuntu18.04下双机驱动调试
环境搭建:
http://blog.51cto.com/haidragon/2337256
这里要先说下如果要下内核断点要先在编译前去掉写保护,但是下自己写的驱动可以不要。
第二个最好编译完后压缩vm系统文件然后复制一份,这样就调试机与被调试机环境一模一样,同样编译生成的符号也有。
我这里是复制的也就是俩个系统一模一样的,只是一个是做客服端,一个是服务端。
开始第一个驱动编写:
http://blog.51cto.com/haidragon/2164619
编译完成后调试机与被调试机各一份最好在一个目录下面。同时最好目录里面东西都是各一份。
然后被调试机安装驱动
找到模块在内核中的偏移地址复制下来 等下用到
输入cat /sys/module/test/sections/.text 中间test为模块名称
然后主动断下
输入echo g>/proc/sysrq-trigger被调试机卡住
调试机就会收到 等待输入命令
这里就是在调试机上操作了
安装要调试的模块
add-symbol-file 文件 模块偏移
add-symbol-file ../test/test.ko 0xffffffffc049a00
然后就可以开始下函数断点调试了。这里就下卸载函数断点
输入 b hello_exit
让系统继续执行
输入 c
然后去被调试机上卸载驱动
调试机上又收到了 等待输入 可以输入l命令看下源码这里没有什么功能就直接放行,让系统继续卸载。
以上是关于ubuntu 写c/c++如何调试?的主要内容,如果未能解决你的问题,请参考以下文章
使用GNU/gdb调试Linux C/C++可执行程序查看出错源代码、设置断点
如何在Ubuntu中使用Eclipse + CDT开发C/C++程序