Change the execution of the program -------
Once you use the GDB to hang up the debugger, when the program runs, you can dynamically change the current debugger running line or the value of its variable according to your own debugging ideas, this powerful function can make you Better debugging your program, for example, you can run all the branches of the program in the program. First, modify the variable value
Modify the variable value when the debugger is running, it is easy to implement in GDB, and you can complete it using GDB's print command. Such as: (GDB) Print X = 4 x = 4 This expression is the syntax of C / C , meaning modified to 4 values of the variable x, if your current debug language is PASCAL, then you can use PASCAL syntax: x: = 4. At some point, it is very likely that your variables and parameters in GDB conflicts, such as: (GDB) Width Type = Double (GDB) P Width $ 4 = 13 (GDB) set width = 47 Invalid Syntax in Expression.
Because set width is the command of GDB, "Invalid Syntax In Expression" appears error, at this time, you can use the set var command to tell GDB, Width is not your GDB parameter, but the program's variable name, Such as: (GDB) SET VAR WIDTH = 47 In addition, some cases, GDB does not report such an error, so the insurance starts, it is best to use the set var format when you change the program variable.
Second, jump execution
In general, the debugging procedure will be executed in accordance with the running order of the program code. GDB provides the function of chaos, that is, GDB can modify the execution order of the program, allowing the program to execute cashed. This feature can be over the jump command of GDB: Jump
Third, generate semaphore
Use the Singal command to generate a signal to be debugged. Such as: Interrupt Signal Ctrl C. This is very convenient for debugging of the program, setting breakpoints in any position running, and generating a semaphore in this breakpoint, which accurately generates a debugging of the signal at some point. The syntax is: Signal
If your debug break is in a function, and there is still a statement that is not executed. You can use the return command to force the function ignore the statements that have not yet been executed and return. Return Return
The Call
Use GDB in different languages ----------
GDB supports the following languages: C, C , Fortran, Pascal, Java, Chill, Assembly, and Modula-2. Generally speaking, GDB will determine the debug language according to the program you debug, such as: Discovering the file name suffix ".c", GDB will consider a C program. The file name suffix is ".c, .cc, .cp, .cpp, .cxx, .c ", GDB will consider a C program. The suffix is ".f, .f", GDB will consider the Fortran program, and if the suffix is ".s, .s" will consider the assembly language.
That is, GDB will set their own language environment based on the language of the program you debug, and let GDB's commands change to change the language environment. For example, some GDB commands require expression or variables, the syntax of these expressions or variables is completely changed according to the current locale. For example, the syntax of the pointer in C / C is * P, and in the modula-2 is P ^. Also, if your current program is compiled by several different languages, the GDB can automatically switch the locale according to different languages during the debugging. This function of changing the language environment is really a design of the developer.
Here are a few commands related to the GDB locale:
Show Language Views the current locale. If GDB does not know the programming language you debug, then the C language is considered a default environment. Info frame is a program language of the current function. Info Source is a program language for the current file. If the GDB does not detect the current programming, you can also manually set the current program language. Use the set language command to do. When the set language command is not followed, you can view the language type supported by GDB: (GDB) Set Language The Currently Understood Settings Are: Local or Auto Automatic Setting Based On Source File C Use The C Language C USE The C language asm Use the asm language chill Use the Chill language fortran Use the Fortran language java Use the Java language modula-2 Use the Modula-2 language pascal Use the Pascal language scheme Use the scheme language so you can keep up is listed in the set language Program language names come to set up the current locale.
postscript--
GDB is a powerful command line debugging tool. Everyone knows the power of the command line that it can form a sequence to form a script. The software under UNIX is the command line. This gives the program development for great convenience, the advantage of the command line software is that they can be very easy to integrate, using a few simple tools, You can make a very powerful feature. So the software under UNIX is more organically combined than the software under Windows, and each exerts each of the strengths and combines a stronger function. The graphics software under Windows is basically the camp, which cannot be called, which is very disadvantageous for the integration of various software. It is not what comparable to Windows, the so-called "inch", the feature is short ", the graphics tool is still a place that is not as good as the command line. (When you see this sentence, I hope that I will never think that I am "despise the graphical interface", and I raise the bar.) I am writing this article written by the version 5.1.1, so there may be some functions Has been modified or more powerful. Moreover, I wrote very rush, it is more written, and I have seen many of the wrong words (I use five, so the wrong word makes you can't understand), so I am here to express my mistake in my text. Apologize. When the function of the GDB in the text, I just collected some of the commands and usage methods of GDB, in fact, I only explain the features of all GDBs, more documents, or see it, please check GDB's help and use manual, perhaps, after a while, if I have time, I will write a GDB's advanced use. I personally like the function of automatic debugging of GDB. This feature is really powerful. I am really powerful. I write a script under UNIX, let the script automatically compile my program, automatically debug, and report the results, debugging, automatic Checkin source code library. A order, compile with commissioning with Checkin, more cool. Just GDB is not very mature for automated debugging, only semi-automated, and sincerely expects the maturity of GDB automation debugging. If you are interested in GDB or other technical issues, welcome to discuss communication with me. I am currently the development of product software under UNIX, so it is more familiar to software development under UNIX, of course, not just technology, implementation, software design, system analysis, project management, I also have a slight experience. Welcome everyone to find me, (QQ is: 753640, MSN is: haoel@hotmail.com) <- Previous Page
(All rights reserved, please indicate the author and the source when reproduced)