perintah set args

Menetapkan argumen default untuk program yang sedang di-debug.

Sintaks

set args [Argumen]
show args

Parameter

Argumen
Menentukan argumen baris perintah default yang akan diteruskan ke program.

Catatan

Argumen yang ditentukan dengan set args akan digunakan jika Anda memulai program dengan perintah run.

Jika Anda memberikan argumen dengan perintah run, argumen yang ditetapkan dengan set args tidak akan digunakan.

Restrictions

Jika Anda menetapkan argumen menggunakan perintah set args setelah program dimulai, argumen tersebut tidak akan berlaku sampai Anda me-restart program tersebut.

Perintah set args tidak berlaku saat melampirkan (attach) ke proses dengan attach.

Contoh

Pada contoh ini, kita akan menjalankan program C++ berikut:

                        
#include 

int main(int argc, char *argv[])
{
    for(int i = 1; i < argc; i++)
        printf("Argumen %d: %s\n", i, argv[i]);
    return 0;
}
                        
                    

Kita akan menetapkan argumen default, memulai program, dan mengamati keluarannya:

                        
(gdb) b main
Breakpoint 1 at 0x401395: file 0.cpp, line 4.
(gdb) set args "Hello, World" Test
(gdb) run
Starting program: c:"Hello, World" Test
[New Thread 704.0x418]

Breakpoint 1, main (argc=3, argv=0x3e3f68) at 0.cpp:4
4       {
(gdb) show args
Argument list to give program being debugged when it is started is ""Hello, World" Test".
(gdb) continue
Continuing.
Argument 1: Hello, World
Argument 2: Test
[Inferior 1 (process 704) exited normally]
(gdb)
                        
                    

Kesalahan Umum

Menetapkan argumen setelah Anda memulai program tidak akan berlaku sampai Anda me-restart program:

                        
(gdb) set args Test1
(gdb) b main
Breakpoint 1 at 0x401395: file 0.cpp, line 4.
(gdb) run
Starting program: c:Test1
[New Thread 1992.0x9c0]
Breakpoint 1, main (argc=2, argv=0x3e3f38) at 0.cpp:4
4       {
(gdb) print *argv@argc
$1 = {0x3e3ec5 "c:\mingw\bin\0.exe", 0x3e3ed9 "Test1"}
(gdb) set args Test2
(gdb) print *argv@argc
$2 = {0x3e3ec5 "c:\mingw\bin\0.exe", 0x3e3ed9 "Test1"}
(gdb) run
The program being debugged has been started already.
Start it from the beginning? (y or n) y
Starting program: c:Test2
[New Thread 828.0x62c]
Breakpoint 1, main (argc=2, argv=0x3e3f38) at 0.cpp:4
4       {
(gdb) print *argv@argc
$3 = {0x3e3ec5 "c:\mingw\bin\0.exe", 0x3e3ed9 "Test2"}
(gdb)