H
Hugh Sparks
In an application that has multiple files that each define a
typedef with the same name, the debugger does not correctly
use the local typedef when stepping in local functions.
The following example has two source files that each
define the type "ivars". If you place a breakpoint in
the "local2" function in File2.c, the debugger will
display *self using the typedef from File1.c
The generated code functions correctly, the problem
is only with the debugger's display of the data structure.
File1.c
extern void *malloc(size_t) ;
typedef struct
{ int a ;
int b ;
} ivars ;
void local1(ivars *self)
{ self->a = 1 ;
self->b = 2 ;
}
ivars *new1()
{ return malloc(sizeof(ivars)) ;
}
File2.c
extern void *malloc(size_t) ;
typedef struct
{ int p ;
int q ;
} ivars ;
void local2(ivars *self)
{ self->p = 3 ;
self->q = 4 ;
}
ivars *new2()
{ return malloc(sizeof(ivars)) ;
}
Main.c
void *local2(void*) ;
main()
{ void *x = new2() ;
local2(x) ;
}
typedef with the same name, the debugger does not correctly
use the local typedef when stepping in local functions.
The following example has two source files that each
define the type "ivars". If you place a breakpoint in
the "local2" function in File2.c, the debugger will
display *self using the typedef from File1.c
The generated code functions correctly, the problem
is only with the debugger's display of the data structure.
File1.c
extern void *malloc(size_t) ;
typedef struct
{ int a ;
int b ;
} ivars ;
void local1(ivars *self)
{ self->a = 1 ;
self->b = 2 ;
}
ivars *new1()
{ return malloc(sizeof(ivars)) ;
}
File2.c
extern void *malloc(size_t) ;
typedef struct
{ int p ;
int q ;
} ivars ;
void local2(ivars *self)
{ self->p = 3 ;
self->q = 4 ;
}
ivars *new2()
{ return malloc(sizeof(ivars)) ;
}
Main.c
void *local2(void*) ;
main()
{ void *x = new2() ;
local2(x) ;
}