问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

linux c语言 网络编程如何调试

发布网友 发布时间:2022-04-20 19:26

我来回答

3个回答

懂视网 时间:2022-05-02 10:37

,而不能同时跟踪多个进程,但可以设置gdbfork之后跟踪父进程还是子进程。以上面的程序为

#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#define MAXLINE 80

int main(void)
{
 int n;
 int fd[2];
 pid_t pid;
 char line[MAXLINE];

 if (pipe(fd) < 0)
 { 
 perror("pipe");
 exit(1);
 } 
 if ((pid = fork()) < 0)
 { 
 perror("fork");
 exit(1);
 } 
 if (pid > 0) /* parent */
 { 
 close(fd[0]);
 write(fd[1], "hello world
", 12);
 wait(NULL);
 } 
 else  /* child */
 { 
 close(fd[1]);
 n = read(fd[0], line, MAXLINE);
 printf("---------------in-----------");
 write(STDOUT_FILENO, line, n); 
 } 
 return 0;
}

  

$ gcc main.c -g
$ gdb a.out
GNU gdb 6.8-debian
Copyright (C) 2008 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu"...
(gdb) l
2	#include <unistd.h>
3	#include <stdio.h>
4	#include <stdlib.h>
5	
6	int main(void)
7	{
8		pid_t pid;
9		char *message;
10		int n;
11		pid = fork();
(gdb) 
12		if(pid<0) {
13			perror("fork failed");
14			exit(1);
15		}
16		if(pid==0) {
17			message = "This is the child
";
18			n = 6;
19		} else {
20			message = "This is the parent
";
21			n = 3;
(gdb) b 17
Breakpoint 1 at 0x8048481: file main.c, line 17.
(gdb) set follow-fork-mode child
(gdb) r
Starting program: /home/akaedu/a.out 
This is the parent
[Switching to process 30725]

Breakpoint 1, main () at main.c:17
17			message = "This is the child
";
(gdb) This is the parent
This is the parent

技术分享 

技术分享

 

--------------------------------------------------------------------- 

编写代码过程中少不了调试。在windows下面,我们有visual studio工具。在Linux下面呢,实际上除了gdb工具之外,你没有别的选择。那么,怎么用gdb进行调试呢?我们可以一步一步来试试看。

 

[cpp] view plain copy  
  1. #include <stdio.h>  
  2.   
  3. int iterate(int value)  
  4. {  
  5.     if(1 == value)  
  6.         return 1;  
  7.   
  8.     return iterate(value - 1) + value;  
  9. }  
  10.   
  11. int main()  
  12. {  
  13.     printf("%d ", iterate(10));  
  14.     return 1;  
  15. }  

    既然需要调试,那么生成的可执行文件就需要包含调试的信息,这里应该怎么做呢?很简单,输入 gcc test.c -g -o test。输入命令之后,如果没有编译和链接方面的错误,你就可以看到 可执行文件test了。

 

    调试的步骤基本如下所示,


(01) 首先,输入gdb test
(02) 进入到gdb的调试界面之后,输入list,即可看到test.c源文件
(03) 设置断点,输入 b main 
(04) 启动test程序,输入run 
(05) 程序在main开始的地方设置了断点,所以程序在printf处断住  
(06) 这时候,可以单步跟踪。s单步可以进入到函数,而n单步则越过函数
(07) 如果希望从断点处继续运行程序,输入c
(08) 希望程序运行到函数结束,输入finish
(09) 查看断点信息,输入 info break
(10) 如果希望查看堆栈信息,输入bt
(11) 希望查看内存,输入 x/64xh + 内存地址
(12) 删除断点,则输入delete break + 断点序号
(13) 希望查看函数局部变量的数值,可以输入print + 变量名

(14)希望修改内存值,直接输入 print  + *地址 = 数值
(15) 希望实时打印变量的数值,可以输入display + 变量名
(16) 查看函数的汇编代码,输入 disassemble + 函数名
(17) 退出调试输入quit即可

linux下的C语言开发(gdb调试)

标签:data-   class   version   查看   turn   png   let   gcc   sas   

热心网友 时间:2022-05-02 07:45

可以在两部主机或者利用抓包软件测试

热心网友 时间:2022-05-02 09:03

你使用什么工具开发的?
linux下我们使用ubuntu系统,从8、10、12、14、16到现在的18,有界面的,ide使用qt,直接断点调试即可。
c的话可以使用gdb。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
R&amp;B音乐属于什么类型? 电动车电池是多少伏的? 男朋友对我说不要浪费时间在他身上,什么意思? 我男朋友给我一 年的时间来让我改变! 回收手机电脑 ...海鸥的声音,好像那首歌是纪念黄家驹的,突然忘记叫什么 身份证和户口本年龄正确。可以修改档案年龄吗? 开美甲店有什么危害 常见的办公室空气污染源有哪些 新房甲苯和甲醛哪个多 胃口不好应该吃什么好啊 宝宝湿疹吃什么辅食好 小孩子吃什么补锌效果最好最快?缺锌吃什么补得最快? 锠鱼怎么做的吃? 4月出去青岛 1-12月份适合吃什么水果 几月份去青岛是吃海鲜的最好时节? 青岛3月份吃什么海鲜 葫芦岛四月份吃什么海鲜 3月份吃什么海鲜 四月份吃什么补品好 请问秦皇岛4月份流行吃什么?有正当令的海鲜么? 夏季适宜吃什么海鲜? 四月份吃什么海鲜 4月适合吃的当季海鲜有哪些好不好 四月适合吃什么海鲜 四五月份什么海鲜最肥 4,5月份吃什么海鲜好 四月份吃什么海鲜最好 为什么那么多人烧香拜佛,人们捐给寺庙的钱都用来... 活人可以可捐泪腺吗? linux 网络编程问题 如何学习linux平台上的网络编程 为什么Linux适合网络编程 学习LINUX下的网络编程 必看什么书 请比较Linux与Windows在网络编程方面的特点 杭州健康码黄码和橙码区别 杭州健康码是什么颜色? 浙江健康码怎么申请 浙江的健康码叫什么 杭州健康码有几种颜色? 很多人说坐地铁一号线到杭州东站健康码绿码会变黄... 是不是扫过杭州市健康码都变成了红码我的码还是绿... 杭州渐变色健康码什么颜色是最健康的? 杭州健康码怎么领 杭州健康码服务电话? 杭州去哪里健康码会变红? 杭州健康码将推广全国,健康码有什么作用呢? 杭州健康码申诉后怎么通知 去过杭州市杭州市把健康码改为黄色但是回到原出发... 杭州渐变色健康码将上线是怎么回事?