- 浏览: 1068909 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
jingxuewang2010:
gvParameter是什么?
GridView绑定xml,增,删,改,取消 -
学不止:
...
FreeSwitch Sip -
lushcenter:
个人学习中!
Ajax 服务器推送 -
amcucn:
楼主可以自学啊,如果你想做一个软件,从无到有。那你可以选择一门 ...
计算机专业前途几何 ?觉得很迷茫 -
Technoboy:
终于看完了
字符集和字符编码(Charset & Encoding)
GDB Command Line Arguments
Starting GDB:
- gdb name-of-executable
- gdb -e name-of-executable -c name-of-core-file
-
gdb name-of-executable -pid process-id
(Use ps -auxw to list process id's.)
Command line options: (version 6. Older versions use a single "-")
--help -h |
List command line arguments |
--exec=file-name -e file-name |
Identify executable associated with core file. |
--core=name-of-core-file -c name-of-core-file |
Specify core file. |
--command=command-file -x command-file |
File listing GDB commands to perform. Good for automating set-up. |
--directory=directory -d directory |
Add directory to the path to search for source files. |
--cd=directory | Run GDB using specified directory as the current working directory. |
--nx -n |
Do not execute commands from ~/.gdbinit initialization file. Default is to look at this file and execute the list of commands. |
--batch -x command-file | Run in batch (not interactive) mode. Execute commands from file. Requires -x option. |
--symbols=file-name -s file-name |
Read symbol table from file file. |
--write | Enable writing into executable and core files. |
--quiet -q |
Do not print the introductory and copyright messages. |
--tty=device | Specify device for running program's standard input and output. |
--pid=process-id -p process-id -c process-id |
Specify process ID number to attach to. |
GDB Commands: |
Commands used within GDB:
help | List gdb command topics. |
help topic-classes | List gdb command within class. |
help command | Command description. |
apropos search-word | Search for commands and command topics containing search-word. |
info args i args |
List program command line arguments |
info breakpoints | List breakpoints |
info break | List breakpoint numbers. |
info break breakpoint-number | List info about specific breakpoint. |
info watchpoints | List breakpoints |
info registers | List registers in use |
info threads | List threads in use |
info set | List set-able option |
break funtion-name break line-number |
Suspend program at specified function of line number. break ClassName::functionName |
break +offset break -offset |
Set a breakpoint specified number of lines forward or back from the position at which execution stopped. |
break filename:function | Don't specify path, just the file name and function name. |
break filename:line-number | Don't specify path, just the file name and line number. break Directory/Path/filename.cpp:62 |
break *address | Suspend processing at an instruction address. Used when you do not have source. |
break line-number if condition | Where condition is an expression. i.e. x > 5 Suspend when boolean expression is true. |
break line thread thread-number | Break in thread at specified line number. Use info threads to display thread numbers. |
tbreak | Temporary break. Break once only. Break is then removed. See "break" above for options. |
watch condition | Suspend processing when condition is met. i.e. x > 5 |
clear clear function clear line-number |
Delete breakpoints as identified by command option. |
delete d |
Delete all breakpoints, watchpoints, or catchpoints. |
delete breakpoint-number delete range |
Delete the breakpoints, watchpoints, or catchpoints of the breakpoint ranges specified as arguments. |
disable breakpoint-number-or-range enable breakpoint-number-or-range |
Does not delete breakpoints. Just enables/disables them. Example: Show breakpoints: info break Disable: disable 2-9 |
enable breakpoint-number once | Enables once |
continue c |
Continue executing until next break point/watchpoint. |
continue number | Continue but ignore current breakpoint number times. Usefull for breakpoints within a loop. |
finish | Continue to end of function. |
step s step number-of-steps-to-perform |
Step to next line of code. Will step into a function. |
next n next number |
Execute next line of code. Will not enter functions. |
until until line-number |
Continue processing until you reacha aspecified line number. Also: function name, address, filename:function or filename:line-number. |
stepi si nexti ni |
step/next assembly/processor instruction. |
info signals info handle handle SIGNAL-NAME option |
Perform the following option when signal recieved: nostop, stop, print, noprint, pass/noignore or nopass/ignore |
where | Shows current line number and which function you are in. |
backtrace bt bt inner-function-nesting-depth bt -outer-function-nesting-depth |
Show trace of where you are currently. Which functions you are in. Prints stack backtrace. |
backtrace full | Print values of local variables. |
frame number f number |
Select frame number. |
up number down number |
Move up/down the specified number of frames in the stack. |
info frame | List address, language, address of arguments/local variables and which registers were saved in frame. |
info args info locals info catch |
Info arguments of selected frame, local variables and exception handlers. |
list l list line-number list function list - list start#,end# list filename:function |
List source code. |
set listsize count show listsize |
Number of lines listed when list command given. |
directory directory-name dir directory-name show directories |
Add specified directory to front of source code path. |
directory | Clear sourcepath when nothing specified. |
print variable-name p variable-name p file-name::variable-name p 'file-name'::variable-name |
Print value stored in variable. |
p *array-variable@length | Print first # values of array specified by length. Good for pointers to dynamicaly allocated memory. |
p/x variable | Print as integer variable in hex. |
p/d variable | Print variable as a signed integer. |
p/u variable | Print variable as a un-signed integer. |
p/o variable | Print variable as a octal. |
p/t variable x/b address x/b &variable |
Print as integer value in binary. (1 byte/8bits) |
p/c variable | Print integer as character. |
p/f variable | Print variable as floating point number. |
p/a variable | Print as a hex address. |
x/w address x/4b &variable |
Print binary representation of 4 bytes (1 32 bit word) of memory pointed to by address. |
set gdb-option value | Set a GDB option |
set logging on set logging off show logging set logging file log-file |
Turn on/off logging. Default name of file is gdb.txt |
set print array on set print array off show print array |
Default is off. Convient readable format for arrays turned on/off. |
set print array-indexes on set print array-indexes off show print array-indexes |
Default off. Print index of array elements. |
set print pretty on set print pretty off show print pretty |
Format printing of C structures. |
set print union on set print union off show print union |
Default is on. Print C unions. |
set print demangle on set print demangle off show print demangle |
Default on. Controls printing of C++ names. |
run r run command-line-arguments run < infile > outfile |
Start program execution from the beginning of the program. The command break main will get you started. Also allows basic I/O redirection. |
continue c |
Continue execution to next break point. |
kill | Stop program execution. |
quit q |
Exit GDB debugger. |
GDB Operation: |
- Compile with the "-g" option (for most GNU and Intel compilers) which generates added information in the object code so the debugger can match a line of source code with the step of execution.
- Do not use compiler optimization directive such as "-O" or "-O2" which rearrange computing operations to gain speed as this reordering will not match the order of execution in the source code and it may be impossible to follow.
- control+c: Stop execution. It can stop program anywhere, in your source or a C library or anywhere.
- To execute a shell command: ! command
or shell command - GDB command completion: Use TAB key
info bre + TAB will complete the command resulting in info breakpoints
Press TAB twice to see all available options if more than one option is available or type "M-?" + RETURN. - GDB command abreviation:
info bre + RETURN will work as bre is a valid abreviation for breakpoints
De-Referencing STL Containers: |
Displaying STL container classes using the GDB "p variable-name" results in an cryptic display of template definitions and pointers. Use the following ~/.gdbinit file (V1.03 09/15/08). Now works with GDB 4.3+.
(Archived versions: [V1.01 GDB 6.4+ only])
Thanks to Dr. Eng. Dan C. Marinescu for permission to post this script.
Use the following commands provided by the script:
std::vector<T> | pvector stl_variable |
std::list<T> | plist stl_variable T |
std::map<T,T> | pmap stl_variable |
std::multimap<T,T> | pmap stl_variable |
std::set<T> | pset stl_variable T |
std::multiset<T> | pset stl_variable |
std::deque<T> | pdequeue stl_variable |
std::stack<T> | pstack stl_variable |
std::queue<T> | pqueue stl_variable |
std::priority_queue<T> | ppqueue stl_variable |
std::bitset<n>td> | pbitset stl_variable |
std::string | pstring stl_variable |
std::widestring | pwstring stl_variable |
Also see the YoLinux.com STL string class tutorial and debugging with GDB.
De-Referencing a vector: |
Example: STL_vector_int.cpp
|
Debug in GDB: gdb a.out
(gdb) l 1 #include <iostream> 2 #include <vector> 3 #include <string> 4 5 using namespace std; 6 7 main() 8 { 9 vector<int> II; 10 (gdb) l 11 II.push_back(10); 12 II.push_back(20); 13 II.push_back(30); 14 15 cout << II.size() << endl; 16 17 } (gdb) break 15 Breakpoint 1 at 0x8048848: file STL_vector_int.cpp, line 15. (gdb) r Starting program: /home/userx/a.out Breakpoint 1, main () at STL_vector_int.cpp:15 15 cout << II.size() << endl; (gdb) p II $1 = { <std::_Vector_base<int,std::allocator<int> >> = { _M_impl = { <std::allocator<int>> = { <__gnu_cxx::new_allocator<int>> = {<No data fields>}, <No data fields>}, members of std::_Vector_base<int,std::allocator<int> >::_Vector_impl: _M_start = 0x804b028, _M_finish = 0x804b034, _M_end_of_storage = 0x804b038 } }, <No data fields>} (gdb) pvector II elem[0]: $2 = 10 elem[1]: $3 = 20 elem[2]: $4 = 30 Vector size = 3 Vector capacity = 4 Element type = int * (gdb) c Continuing. 3 Program exited normally. (gdb) quit |
De-Referencing a 2-D vector of vectors: |
Example: STL_vector_int_2.cpp
|
Debug in GDB: gdb a.out
(gdb) l 1 #include <iostream> 2 #include <vector> 3 4 using namespace std; 5 6 main() 7 { 8 vector< vector<int> > vI2Matrix(3, vector<int>(2,0)); 9 10 vI2Matrix[0][0] = 0; (gdb) l 11 vI2Matrix[0][1] = 1; 12 vI2Matrix[1][0] = 10; 13 vI2Matrix[1][1] = 11; 14 vI2Matrix[2][0] = 20; 15 vI2Matrix[2][1] = 21; 16 17 cout << "Loop by index:" << endl; 18 19 int ii, jj; 20 for(ii=0; ii < 3; ii++) (gdb) break 17 Breakpoint 1 at 0x8048a19: file STL_vector_2.cpp, line 17. (gdb) r Starting program: /home/userx/a.out Breakpoint 1, main () at STL_vector_2.cpp:17 17 cout << "Loop by index:" << endl; (gdb) pvector vI2Matrix elem[0]: $1 = { <std::_Vector_base<int,std::allocator<int> >> = { _M_impl = { <std::allocator<int>> = { <__gnu_cxx::new_allocator<int>> = {<No data fields>}, <No data fields>}, members of std::_Vector_base<int,std::allocator<int> >::_Vector_impl: _M_start = 0x804b040, _M_finish = 0x804b048, _M_end_of_storage = 0x804b048 } }, <No data fields>} elem[1]: $2 = { <std::_Vector_base<int,std::allocator<int> >> = { _M_impl = { <std::allocator<int>> = { <__gnu_cxx::new_allocator<int>> = {<No data fields>}, <No data fields>}, members of std::_Vector_base<int,std::allocator<int> >::_Vector_impl: _M_start = 0x804b050, _M_finish = 0x804b058, _M_end_of_storage = 0x804b058 } }, <No data fields>} elem[2]: $3 = { <std::_Vector_base<int,std::allocator<int> >> = { _M_impl = { <std::allocator<int>> = { <__gnu_cxx::new_allocator<int>> = {<No data fields>}, <No data fields>}, members of std::_Vector_base<int,std::allocator<int> >::_Vector_impl: _M_start = 0x804b060, _M_finish = 0x804b068, _M_end_of_storage = 0x804b068 ---Type <return> to continue, or q <return> to quit--- } }, <No data fields>} Vector size = 3 Vector capacity = 3 Element type = class std::vector<int,std::allocator<int> > * (gdb) pvector $1 elem[0]: $4 = 0 elem[1]: $5 = 1 Vector size = 2 Vector capacity = 2 Element type = int * (gdb) pvector $2 elem[0]: $6 = 10 elem[1]: $7 = 11 Vector size = 2 Vector capacity = 2 Element type = int * (gdb) pvector $3 elem[0]: $8 = 20 elem[1]: $9 = 21 Vector size = 2 Vector capacity = 2 Element type = int * (gdb) p vI2Matrix $10 = { <std::_Vector_base<std::vector<int, std::allocator<int> >,std::allocator<std::vector<int, std::allocator<int> > > >> = { _M_impl = { <std::allocator<std::vector<int, std::allocator<int> > >> = { <__gnu_cxx::new_allocator<std::vector<int, std::allocator<int> > >> = {<No data fields>}, <No data fields>}, members of std::_Vector_base<std::vector<int, std::allocator<int> >,std::allocator<std::vector<int, std::allocator<int> > > >::_Vector_impl: _M_start = 0x804b018, _M_finish = 0x804b03c, _M_end_of_storage = 0x804b03c } }, <No data fields>} (gdb) quit |
相关推荐
- GDB命令遵循一定的语法结构,例如`command [arguments]`。 **3.2 命令补全** - GDB支持命令补全功能,通过按Tab键可以完成命令或文件名的补全。 **3.3 帮助** - 使用`help`命令获取帮助信息。 #### 四、在GDB...
printf("---------- command line arguments ----------\n"); for (i = 0, p = argv[i]; p != NULL; p = argv[++i]) { printf("%d: %s\n", i, p); } printf("---------- environment variables ----------\n");...
5. **在GDB中执行shell命令**:`shell command`。 6. **在GDB中执行make**:`make`。 7. **设置命令提示符**:`set prompt prompt_string`。 8. **设置程序参数**:`set args arguments`。 9. **设置环境变量**:`...
- `-args arguments`: 在运行程序时传递参数。 2. **设置断点** - `break line_number`: 在特定行设置断点。 - `b function_name`: 在函数名处设置断点。 - `break *address`: 在内存地址处设置断点。 3. **...
- gdb支持多种命令格式,基本格式为`command [arguments]`。 ##### 3.2 命令补全 - 在输入命令时,按下`Tab`键可以自动补全命令或文件名,这有助于减少输入错误。 ##### 3.3 获取帮助 - 使用`help`命令可以获取...
Stepping to the next line in the source program . . . . . . . . . . . . Stepping into a subroutine . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Examining the Stack . . . . . . . . . ....
Your program’s arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Your program’s environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . Your program’s working ...
Your program’s arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . Your program’s environment . . . . . . . . . . . . . . . . . . . . . . . . . . . . Your program’s working ...
- **命令**: `(gdb) list line1, line2` - **功能**: 显示指定行号范围内的源代码。 - **示例**: `(gdb) list 10, 20` 将显示第10行到第20行的源代码。 ##### 2. 运行程序 (Run) - **命令**: `run` - **功能**: ...
8. **命令行参数(Command Line Arguments)**:在DOS环境下,程序可能需要接收命令行参数,比如文件路径,这需要用到main函数的argc和argv参数。 9. **用户界面(User Interface)**:虽然DOS环境下的用户界面较为...
4.3 Your Program’s Arguments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4.4 Your Program’s Environment. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...
5.1. Command line arguments 5.2. Search order for the configuration file 5.3. The configuration interface 'textconfig' 5.3.1. The start menu 5.3.2. The Bochs headerbar 5.3.3. The runtime configuration...
(still can be overriden by using "-c" command line parameter). * Lots of bug fixes. Version 4.9.8.1 * When creating a DLL, the created static lib respects now the project-defined output directory ...
• Table of Contents • Index ... Automatically Initializing Instance Variables from _ _init_ _ Arguments Recipe 6.19. Calling a Superclass _ _init_ _ Method If It Exists Recipe 6.20. ...