Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ubuntuvm@ubuntuvm-VirtualBox:~/stack_overflow$ gdb so_ans -q
- Reading symbols from so_ans...done.
- (gdb) list 1
- 1 #include <stdio.h>
- 2 #include <stdlib.h>
- 3 #include <string.h>
- 4
- 5 int check_answer(char *ans) {
- 6
- 7 int ans_flag = 0;
- 8 char ans_buf[16];
- 9
- 10 strcpy(ans_buf, ans);
- (gdb) list
- 11
- 12 if (strcmp(ans_buf, "forty-two") == 0)
- 13 ans_flag = 1;
- 14
- 15 return ans_flag;
- 16
- 17 }
- 18
- 19 int main(int argc, char *argv[]) {
- 20
- (gdb) list
- 21 if (argc < 2) {
- 22 printf("Usage: %s <answer>\n", argv[0]);
- 23 exit(0);
- 24 }
- 25 if (check_answer(argv[1])) {
- 26 printf("Right answer!\n");
- 27 } else {
- 28 printf("Wrong answer!\n");
- 29 }
- 30
- (gdb) break 10
- Breakpoint 1 at 0x400660: file ans_check.c, line 10.
- (gdb) break 15
- Breakpoint 2 at 0x40068f: file ans_check.c, line 15.
- (gdb) run 11111111111111111111111111111
- Starting program: /home/ubuntuvm/stack_overflow/so_ans 11111111111111111111111111111
- Breakpoint 1, check_answer (ans=0x7fffffffe367 '1' <repeats 29 times>)
- at ans_check.c:10
- 10 strcpy(ans_buf, ans);
- (gdb)
- (gdb) x/s ans_buf
- 0x7fffffffdec0: "\001"
- (gdb) x/xw &ans_flag
- 0x7fffffffdedc: 0x00000000
- (gdb) c
- Continuing.
- Breakpoint 2, check_answer (ans=0x7fffffffe367 '1' <repeats 29 times>)
- at ans_check.c:15
- 15 return ans_flag;
- (gdb) c
- Continuing.
- Right answer!
- [Inferior 1 (process 2766) exited with code 016]
- (gdb) x/s ans_buf
- No symbol "ans_buf" in current context.
- (gdb) exit
- Undefined command: "exit". Try "help".
- (gdb) quit
- ubuntuvm@ubuntuvm-VirtualBox:~/stack_overflow$ clear
- ubuntuvm@ubuntuvm-VirtualBox:~/stack_overflow$ gdb so_ans -q
- Reading symbols from so_ans...done.
- (gdb) list 1
- 1 #include <stdio.h>
- 2 #include <stdlib.h>
- 3 #include <string.h>
- 4
- 5 int check_answer(char *ans) {
- 6
- 7 int ans_flag = 0;
- 8 char ans_buf[16];
- 9
- 10 strcpy(ans_buf, ans);
- (gdb) list
- 11
- 12 if (strcmp(ans_buf, "forty-two") == 0)
- 13 ans_flag = 1;
- 14
- 15 return ans_flag;
- 16
- 17 }
- 18
- 19 int main(int argc, char *argv[]) {
- 20
- (gdb) list
- 21 if (argc < 2) {
- 22 printf("Usage: %s <answer>\n", argv[0]);
- 23 exit(0);
- 24 }
- 25 if (check_answer(argv[1])) {
- 26 printf("Right answer!\n");
- 27 } else {
- 28 printf("Wrong answer!\n");
- 29 }
- 30
- (gdb) break 10
- Breakpoint 1 at 0x400660: file ans_check.c, line 10.
- (gdb) break 15
- Breakpoint 2 at 0x40068f: file ans_check.c, line 15.
- (gdb) run 11111111111111111111111111111
- Starting program: /home/ubuntuvm/stack_overflow/so_ans 11111111111111111111111111111
- Breakpoint 1, check_answer (ans=0x7fffffffe367 '1' <repeats 29 times>)
- at ans_check.c:10
- 10 strcpy(ans_buf, ans);
- (gdb) x/s ans_buf
- 0x7fffffffdec0: "\001"
- (gdb) x/xw &ans_flag
- 0x7fffffffdedc: 0x00000000
- (gdb) c
- Continuing.
- Breakpoint 2, check_answer (ans=0x7fffffffe367 '1' <repeats 29 times>)
- at ans_check.c:15
- 15 return ans_flag;
- (gdb) x/s ans_buf
- 0x7fffffffdec0: '1' <repeats 29 times>
- (gdb) x/xw &ans_flag
- 0x7fffffffdedc: 0x00000031
- (gdb)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement