デバッガで遊んでいます。私が取り組んでいる実際のタスクは、コードを実行するときに命令ポインターがどのように変化するかを監視することです。
しかし、私は他の何かを理解するのに苦労しています。6 行目、strcpy (7 行目)、および 8 行目にブレークポイントを設定しました。ブレークポイントを設定したら、それを実行します。
ブレークポイントを異なる順序で通過するのはなぜですか? ブレークポイント 2、ブレークポイント 1、ブレークポイント 3 ?
私が持っている他の質問... ブレークポイント 1 は 6 行目に設定されました。しかし、そのブレークポイントに到達すると、「char_array2.c:7」と表示されます。行 6 が空であることは承知していますが、ブレークポイントは行 7 の一部を読み取る前に停止しますか?
(gdb) list
1 #include <stdio.h>
2 #include <string.h>
3
4 int main() {
5 char str_a[20];
6
7 strcpy(str_a, "Hello World!\n");
8 printf(str_a);
9 }
(gdb)
Line number 10 out of range; char_array2.c has 9 lines.
(gdb) break 6
Breakpoint 1 at 0x100000ec8: file char_array2.c, line 6.
(gdb) break strcpy
Breakpoint 2 at 0x20c49ba5c77e20
(gdb) break 8
Breakpoint 3 at 0x100000edd: file char_array2.c, line 8.
(gdb) run
Starting program: /Users/Guest1/Desktop/Hacking files/char_array2
Reading symbols for shared libraries +. done
Breakpoint 2, 0x00007fff8601ce20 in strcpy ()
(gdb) continue
Continuing.
Breakpoint 1, main () at char_array2.c:7
7 strcpy(str_a, "Hello World!\n");
(gdb) continue
Continuing.
Breakpoint 3, main () at char_array2.c:8
8 printf(str_a);