Linux下C语言环境编程(gdb调试指针)
2018-03-13 20:42
369 查看
1.vim:
2.gcc:
3.预处理:
4.链接:
5.gdb调试
这是在swap函数中a,b的地址 这是在main函数中a,b的地址明显不一样,证明两个a,b是不一样的。所以a,b的值没有改变。还可以验证栈区地址是从上往下增长 全局变量g_argv的地址相对来说就小很多
指针错误,内存错误,逻辑错误。
调试
两个ptr的地址空间不同,从下图也可以看出,ptr在函数中是0x0,说明这两个ptr是不同的
修改后的代码:
#include<stdio.h>
#include <stdlib.h>
#include<string.h>
#include<unistd.h>
void get_memory(char **ptr, int size)
{
*ptr = malloc(size);
printf(":\n");
}
int main(void)
{
char *ptr = NULL;
get_memory(&ptr, 100);
strncpy(ptr, "hello", 100);
printf("ptr: %s\n", ptr);
free(ptr);
return 0;
}
2.gcc:
3.预处理:
4.链接:
5.gdb调试
#include <stdio.h> void swap(int a, int b) { int c; c = a; a = b; b = c; } int main(void) { int a = 20; int b = 30; swap (a, b); printf("a=%d b=%d\n", a, b); }
这是在swap函数中a,b的地址 这是在main函数中a,b的地址明显不一样,证明两个a,b是不一样的。所以a,b的值没有改变。还可以验证栈区地址是从上往下增长 全局变量g_argv的地址相对来说就小很多
#include<stdio.h> #include <stdlib.h> #include<string.h> #include<unistd.h> void get_memory(char *ptr, int size) { ptr = malloc(size); } int main(void) { char *ptr = NULL; get_memory(ptr, 100); strncpy(ptr, "hello", 100); printf("ptr: %s\n", ptr); free(ptr); return 0; }
指针错误,内存错误,逻辑错误。
调试
两个ptr的地址空间不同,从下图也可以看出,ptr在函数中是0x0,说明这两个ptr是不同的
修改后的代码:
#include<stdio.h>
#include <stdlib.h>
#include<string.h>
#include<unistd.h>
void get_memory(char **ptr, int size)
{
*ptr = malloc(size);
printf(":\n");
}
int main(void)
{
char *ptr = NULL;
get_memory(&ptr, 100);
strncpy(ptr, "hello", 100);
printf("ptr: %s\n", ptr);
free(ptr);
return 0;
}
相关文章推荐
- gdb调试&C语言指针高级编程(5.7)
- Linux 下 C 语言编程 GDB 调试
- linux下pthread简单编程实例及gdb调试(core dumped)
- Linux下C编程+GDB调试
- linux 环境下 gdb 附加进程调试程序
- __FILE__,__LINE__,FUNCTION__实现代码跟踪调试(linux下c语言编程)
- 搭建交叉调试环境 arm-linux-gdb配合gdbserver
- linux环境gdb调试工具学习笔记
- __FILE__,__LINE__,FUNCTION__实现代码跟踪调试(linux下c语言编程 )
- __FILE__,__LINE__,FUNCTION__实现代码跟踪调试(linux下c语言编程 )
- windows下用eclipse+goclipse插件+gdb搭建go语言开发调试环境
- ubuntu10.10使用GDB构建ARMlinux在线调试环境
- Linux环境下的GCC编译器与GDB调试工具介绍
- linux下c语言编程之一环境架设和入门
- 【Linux基础】Linux下C语言编程环境概述
- arm-linux-gdb 环境搭建及调试core文件
- 搭建交叉调试环境arm-linux-gdb与gdbserver
- __FILE__,__LINE__,FUNCTION__实现代码跟踪调试(linux下c语言编程
- “C语言” 读书札记(六)之[Linux下C语言编程环境Make命令和Makefile]
- windows下用eclipse+goclipse插件+gdb搭建go语言开发调试环境