测试代码(test.c)如下
在~/.gdbinit下加入如下代码(如果没有此文件,需要手工建立):
点击(此处)折叠或打开
- #include <stdio.h>
- #include <stdlib.h>
- typedef struct node{
- int val;
- struct node * next;
- }node_list_t;
- typedef node_list_t* pnode_list_t;
- typedef node_list_t** ppnode_list_t;
- void create_list( ppnode_list_t ppnode);
- void destroy_list( ppnode_list_t ppnode);
- int main( int argc, char **argv ){
- pnode_list_t list=NULL;
-
- create_list(&list);
- destroy_list(&list);
- return 0;
- }
- void create_list( ppnode_list_t ppnode){
- int count=10;
- pnode_list_t temp=NULL;
- while(count){
- temp=(pnode_list_t)malloc(sizeof(node_list_t));
- if(temp){
- temp->val=count;
- temp->next=*ppnode;
- *ppnode=temp;
- }
- --count;
- }
- }
- void destroy_list( ppnode_list_t ppnode){
- pnode_list_t temp=NULL;
- if(!ppnode){
- return;
- }
- while(*ppnode){
- temp=*ppnode;
- *ppnode=(*ppnode)->next;
- free(temp);
- temp=NULL;
- }
- }
点击(此处)折叠或打开
- define print_list
- set $list=$arg0
- while($list)
- printf "%d\t",$list->val
- set $list=$list->next
- end
- printf "\n"
- end
以上代码定义了一个gdb的自定义函数:print_list,后续调试的时候会用到
点击(此处)折叠或打开
- gcc -g -o test test.c
点击(此处)折叠或打开
- gdb ./test
点击(此处)折叠或打开
- (gdb) b 21
- (gdb) r
点击(此处)折叠或打开
- (gdb) print_list list
- 1 2 3 4 5 6 7 8 9 10
- (gdb)