ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

gdb调试程序记录+各种记录!做好记录

2021-03-04 10:57:06  阅读:346  来源: 互联网

标签:设置 记录 tee 单步 gdb 内存 调试程序 地址 断点


linux下把输出输入到文件中并在屏幕上显示:

把标准输出和错误输出都重定向到一个文件,那么命令如下:

command  2>&1 | tee -a log

>arbiter.txt 2>&1

ls|tee ls.txt

command 2>&1 | tee -a log   //-a的作用是附加而不是覆盖

2>&1 | tee output.log 就按这一条!!! 两边是同时的.

2>&1 | tee 1.txt

 

输出重定向的话会有延时

1.把命令运行的结果保存到文件当中:用 > 把输出转向就可以了

2.在输出信息的同时把信息记录到文件中: tee 命令  
  解释一下tee的作用:
   “read from standard input and write to standard output and files”,它从标准输入读取内容并将其写到标准输出和文件中

        参数:  -a, --append,“append to the given FILEs, do not overwrite“,附加至给出的文件,而不是覆盖它

 

怎么把socket通信程序改为不同主机(虚拟机)之间的?

arbiter中:server_addr.sin_addr.s_addr = INADDR_ANY。 其中INADDR_ANY就是指定地址为0.0.0.0的地址,这个地址事实上表示不确定地址,或“所有地址”、“任意地址”。如果serv.sin_addr.s_addr=htonl(INADDR_ANY);   的话,无论连接哪个ip都可以连上的,只要是往这个端口发送的所有ip都能连上。

peer中:server ip的地址改为arbiter的ip地址

2021.2.9

在ubuntu系统上编译程序时出现内存不足怎么解决:

1.直接增大虚拟机设置的内存

2.增加一个交换分区 参考博文https://blog.csdn.net/weixin_30451709/article/details/97501184?utm_medium=distribute.pc_relevant.none-task-blog-searchFromBaidu-2.not_use_machine_learn_pai&depth_1-utm_source=distribute.pc_relevant.none-task-blog-searchFromBaidu-2.not_use_machine_learn_pai

可以通过临时使用交换分区来解决:

sudo dd if=/dev/zero of=/swapfile bs=64M count=16   
#count的大小就是增加的swap空间的大小,64M是块大小,所以空间大小是bs*count=1024MB
sudo mkswap /swapfile                               
#把刚才空间格式化成swap格式
sudo swapon /swapfile                               
#使用刚才创建的swap空间

在编译完成后,最好可以关闭(释放)交换空间

sudo swapoff /swapfile
sudo rm /swapfile

最近总是在修改了

段错误应该就是访问了不可访问的内存,这个内存要么是不存在的,要么是受系统保护的。单步调试好像需要先设置一个断点。当程序被停住了,你可以用 continue 命令恢复程序的运行直到程序结束,或下一个断点。 l是展示源代码,s是在断点后单步执行。还是要多尝试,练习很重要。

Segmentation Fault错误原因总结:数组越界,给了指针0地址0x0

用的较多的几个:先在函数的位置设置断点再单步执行,单步执行是s。

break 文件名 : 行号,适用于有多个源文件的情况。(gdb) b test.c:18

 

带参数的程序该怎么调试:

例如一个程序名为prog 参数为 -l a -C abc
则,运行gcc/g++ -g  prog.c/cpp -o prog

就可以用gdb调试程序prog
#gdb prog

进入gdb调试界面

输入参数命令set args 后面加上程序所要用的参数,注意,不再带有程序名,直接加参数,如:
set args -l a -C abc

回车后输入

r

即可开始。

需要单步调试的话。

单步调试的方法:

如何设置断点?

设置断点可以通过b或者break设置断点,断点的设置可以通过函数名、行号、文件名+函数名、文件名+行号以及偏移量、地址等进行设置。

比如:b main ;b 5(在第5行设置)。查看断点信息是:info breakpoints.

fatal error: error writing to /tmp/cczbJifY.s: No space left on device.这个错误该怎么解决呢,做好记录很重要很重要

设置TMPDIR    export TMPDIR=/root ,问题没有解决。这一句好像不能随便执行,会丢失文件!!导致我重启系统已经打不开了,这下只能重装了。。。哎。预计分配50GB的空间,一般来说交换文件的大小不要超过2GB。编译时总是出现虚拟内存耗尽的问题,当内存不足时会发生什么,结果很简单,linux的内存用完了,无法申请缓冲区,内核会挑选进程将其杀死,一般情况下,杀死正在申请内存的程序。内存耗尽的原因很简单,你申请的内存大小,超过了可用的虚拟内存的大小,注意是虚拟内存virtual memory(内存并不是唯一的,交换分区也可以提供内存)。在我要编译的程序的这个情况下,无限制地增大交换分区的大小也是

怎么卸载已经安装好的虚拟机系统呢?删除整个文件夹,或者在管理里删除。

标签:设置,记录,tee,单步,gdb,内存,调试程序,地址,断点
来源: https://blog.csdn.net/ice_tomato/article/details/113093695

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有