`
macintosh
  • 浏览: 11651 次
社区版块
存档分类
最新评论

gdb调试技巧 32位和64位

    博客分类:
  • gdb
阅读更多
apple:socket apple$ gcc test64.c
apple:socket apple$ ./a.out
__x86_64__apple:socket apple$
apple:socket apple$ gcc -m32 test64.c
apple:socket apple$ ./a.out
__i386__apple:socket apple$
代码如下
#include <stdio.h>

int main(int argc  ,char* argv)

{

   #ifdef __x86_64__

        printf("__x86_64__");

   #elif __i386__

        printf("__i386__");

   #endif

   return 0;

}

---------
写了个socket,64位系统保错,32位不报错
使用gcc -m32 -o server server.c 编译解决
/* server.c */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>

#define MAXLINE 80
#define SERV_PORT 8000

int main(void)
{
	struct sockaddr_in servaddr, cliaddr;
	socklen_t cliaddr_len;
	int listenfd, connfd;
	char buf[MAXLINE];
	char str[INET_ADDRSTRLEN];
	int i, n;

	listenfd = socket(AF_INET, SOCK_STREAM, 0);

	bzero(&servaddr, sizeof(servaddr));
	servaddr.sin_family = AF_INET;
	servaddr.sin_addr.s_addr = htonl(INADDR_ANY);
	servaddr.sin_port = htons(SERV_PORT);
    
	bind(listenfd, (struct sockaddr *)&servaddr, sizeof(servaddr));

	listen(listenfd, 20);

	printf("Accepting connections ...\n");
	while (1) {
		cliaddr_len = sizeof(cliaddr);
		connfd = accept(listenfd, 
				(struct sockaddr *)&cliaddr, &cliaddr_len);
	  
		n = read(connfd, buf, MAXLINE);
		printf("received from %s at PORT %d\n",
		       inet_ntop(AF_INET, &cliaddr.sin_addr, str,sizeof(str)),
		       ntohs(cliaddr.sin_port));
    
		for (i = 0; i < n; i++)
			buf[i] = toupper(buf[i]);
		write(connfd, buf, n);
		close(connfd);
	}
}

client:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>

#define MAXLINE 80
#define SERV_PORT 8000

int main(int argc, char *argv[])
{
	struct sockaddr_in servaddr;
	char buf[MAXLINE];
	int sockfd, n;
	char *str;
    
	if (argc != 2) {
		fputs("usage: ./client message\n", stderr);
		exit(1);
	}
	str = argv[1];
    
	sockfd = socket(AF_INET, SOCK_STREAM, 0);

	bzero(&servaddr, sizeof(servaddr));
	servaddr.sin_family = AF_INET;
	inet_pton(AF_INET, "127.0.0.1", &servaddr.sin_addr);
	servaddr.sin_port = htons(SERV_PORT);
    
	connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr));

	write(sockfd, str, strlen(str));

	n = read(sockfd, buf, MAXLINE);
	printf("Response from server:\n");
	write(STDOUT_FILENO, buf, n);

	close(sockfd);
	return 0;
}



查找问题的时候参考这个链接http://jimmyleeee.blog.163.com/blog/static/930961820103822435873/
分享到:
评论

相关推荐

    100个gdb调试技巧-高清书签版

    本书介绍了大量的gdb调试技巧,里面的技巧在开发过程中非常的实用,高清带书签版

    Linux gdb常用调试技巧

    资料中总结了gdb调试过程中应注意的一些细节,并根据经验给出了一些调试技巧,希望对您有帮助!

    gdb常用调试技巧收集

    gdb 使用的一些技巧整理,适合初学者。gdb是linux c 语言开发的必备调试工具,具有很强大的调试功能

    GDB调试技巧

    GDB调试技巧

    gdb调试方法与技巧

    gdb 调试文档,讲述GDB调试技巧,快速找到问题所在,内含实例精讲。

    用GDB调试程序

    用GDB调试程序,详尽的讲解让你快速掌握gdb调试技巧

    Linux gdb 调试技术.pptx

    linux下使用gdb调试程序的教程。 详细讲解gdb工具的使用,以及调试技巧等。 linux上常用调试技术: 走读代码 打印日志 /proc/pid/... gdb、dbx strace、ltrace valgrind

    GDB使用和调试手册.pdf

    本文档为GDB使用和调试手册,可以根据本文档快速掌握GDB调试技巧,简单、易懂、全面!可以关注本人博客GDB调试篇快速掌握GDB技巧!

    GDB调试精粹及使用实例

    GDB调试精粹及使用实例,描述实战中的gdb使用技巧,并配实例说明。

    100个gdb小技巧(v1.0).pdf

    非常好的gdb速查手册,适合gdb初学者,可以迅速了解到有哪些常用的gdb技巧。每个技巧都有相应的例子。

    100个gdb小技巧

    一个关于gdb使用小技巧的文档。100,在这里可能只是表明很多;具体的数目取决于您的参与和贡献。

    Gdb+gdbserver无源码调试Android 动态链接库的技巧

    本文详细描述欺骗ndk-gdb之后,如何使用gdb的各种常用命令去调试Android的动态链接库。包括如何反汇编,如何单步,等

    Linux实验七 GDB程序调试

    编写一个应用程序,使用gdb调试,并熟悉gdb中几个最常用的命令 2、实验器材: 软件: 安装了ubuntu的VMware虚拟机。 硬件: PC机一台。 3、背景知识: 细节详见官方网站相关内容:...

    嵌入式开发技巧:Linux的GDB远程调试的实现

    远程调试环境由宿主机GDB和目标机调试stub共同构成,两者通过串口或TCP连接。使用GDB标准远程串行协议协同工作,实现对目标机上的系统内核和上层应用的监控和调试功能。调试stub是嵌入式系统中的一段代码,作为宿...

    GDB轻松调试使用方法

    在了解GDB可以做什么,怎么做之前,让我们先来看看为什么要用GDB,或者说对调试工具有什么期望。 一般我们使用GDB(或其他调试工具)是为了发现程序bug,更经常地是在已知程序有错的情况下定位bug。既然这样,我们就...

    GDB的使用技巧培训

    本文详细介绍了在Linux环境下使用GDB如何调试应用程序的相关说明,大家通过阅读该文档,可以对GDB有一定的认识。

    linux-0.11源代码,修改后便于使用GDB调试

    在网络上下载到linux-0.11的源代码后,首先是不断地除错,最终使其能在ubuntu12.04上编译通过,并能用bochs仿真。后来发现bochs仿真bootsect.s不方便,就改用qemu仿真了。

Global site tag (gtag.js) - Google Analytics