Ich versuche, einen Segfault zu debuggen, und ich habe diese Ausgabe von gdb:
(gdb) n
Program received signal SIGSEGV, Segmentation fault.
0x08048af9 in parse_option_list (ptr=0x6f72505f <Address 0x6f72505f out of bounds>, box_name=0x696d6978 <Address 0x696d6978 out of bounds>, option_list=0x313a7974,
num_elements=0x33313532) at submit.c:125
125 memcpy(&(option_list[(*num_elements)].value), value, 24);
(gdb) p num_elements
$15 = (int *) 0x33313532
(gdb) p *num_elements
Cannot access memory at address 0x33313532
(gdb)
Es sieht für mich so aus, als ob etwas in memcpy() schief läuft. Aber ich kann nicht herausfinden, was genau das Problem ist, da diese Zeile so viele Variablen referenziert.
Kann jemand helfen, herauszufinden, was die 0x8048af9 in parse_option_list...
Zeile sagt mir?
Meine Funktionssignatur ist:
int parse_option_list(char *ptr, char *box_name,
struct option_list_values *option_list, int *num_elements)
Und das könnte nützlich sein:
struct option_list_values {
char value[24];
char name[24];
};
Auch die Variablen value
y name
sind nicht segfaulting (aber wenn Sie denken, sie sind, kann ich den Code, der diese Werte setzt posten.) Aber im Moment, wenn ich diese gdb Ausgabe verstehen kann, werde ich glücklich wie eine Muschel sein! Ich danke Ihnen!