This is the mail archive of the
java@gcc.gnu.org
mailing list for the Java project.
gdb 5
- To: java at gcc dot gnu dot org
- Subject: gdb 5
- From: Tony Kimball <alk at pobox dot com>
- Date: Tue, 17 Apr 2001 13:25:37 -0500 (CDT)
- Reply-To: alk at pobox dot com
I'm wondering if these behaviours are indicative of a bug is .stabs,
or if there's something tricky going on:
When I 'main print symbols' in gdb 5.0, it goes into an infinite loop
and segvs. Here's where the output starts to loop:
typedef class {
public JNIEnv env_id;
public jint num_frames;
public JVMPI_CallFrame frames;
JVMPI_CallTrace _ZN15JVMPI_CallTraceaSERKS_;
void _ZN15JVMPI_CallTraceC2ERKS_;
void _ZN15JVMPI_CallTraceC1ERKS_;
void _ZN15JVMPI_CallTraceC2Ev;
void _ZN15JVMPI_CallTraceC1Ev;
} JVMPI_CallTrace;
typedef class {
public jint event_type;
public JNIEnv env_id;
public union {
public:
class {...} class_load;
class {...} class_unload;
class {...} obj_alloc;
class {...} thread_start;
union {...} operator=(union {
public:
class {...} class_load;
class {...} class_unload;
class {...} obj_alloc;
class {...} thread_start;
union {...} operator=(union {
public:
class {...} class_load;
class {...} class_unload;
class {...} obj_alloc;
class {...} thread_start;
union {...} operator=(union {
public:
class {...} class_load;
class {...} class_unload;
class {...} obj_alloc;
class {...} thread_start;
union {...} operator=(union {
public:
class {...} class_load;
class {...} class_unload;
class {...} obj_alloc;
class {...} thread_start;
union {...} operator=(union {
...
ad nauseam.
I also notice that there seems to be a loop in the type for klass in
main:
850 main_thread = new gnu::gcj::runtime::FirstThread (klass, arg_vec);
(gdb) p *klass
p *klass
$2 = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890},
static class$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890},
static class$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890},
static class$ = {<Object> = {<_JvObjectPrefix> = {
_vptr. = 0x8054890},
static class$ = {<Object> = {<_JvObjectPrefix> = {
_vptr. = 0x8054890},
static class$ = {<Object> = {<_JvObjectPrefix> = {
_vptr. = 0x8054890},
static class$ = {<Object> = {<_JvObjectPrefix> = {
_vptr. = 0x8054890},
static class$ = {<Object> = {<_JvObjectPrefix> = {
_vptr. = 0x8054890},
static class$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890}, static class$ = {<Object> = {<_JvObjectPrefix> = {
_vptr. = 0x8054890},
static class$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890},
static class$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890}, static class$ = {<Object> = {<_JvObjectPrefix> = {
_vptr. = 0x8054890},
static class$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890},
---Type <return> to continue, or q <return> to quit---
static class$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890},
static class$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890}, static class$ = {<Object> = {<_JvObjectPrefix> = {
_vptr. = 0x8054890}, static class$ = {<Object> = {<_JvObjectPrefix> = {
_vptr. = 0x8054890}, static class$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890},
static class$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890},
static class$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890},
static class$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890},
static class$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890},
static class$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890}, static class$ = {<Object> = {<_JvObjectPrefix> = {
_vptr. = 0x8054890}, static class$ = {<Object> = {<_JvObjectPrefix> = {
_vptr. = 0x8054890}, static class$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890},
static c---Type <return> to continue, or q <return> to quit---
lass$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890},
static class$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890},
static class$ = {<Object> = {<_JvObjectPrefix> = {_vptr. = 0x8054890},
et cetera.