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++可执行程序查看出错源代码、设置断点

杂记2--ubuntu的vscod直接调试编写.cpp

杂记2--ubuntu的VScode直接调试编写.cpp

如何在Ubuntu中使用Eclipse + CDT开发C/C++程序

如何在Ubuntu中使用Eclipse + CDT开发C/C++程序

如何在Ubuntu中使用Eclipse + CDT开发C/C++程序