M.3. The print and set Commands

In the preceding section, you learned how to use the debugger's print command to examine the value of a variable during program execution. In this section, you will learn how to use the print command to examine the value of more complex expressions. You will also learn the set command, which allows the programmer to assign new values to variables. We assume you are working in the directory containing this appendix's examples and have compiled for debugging with the -g compiler option.

1.

Starting debugging. Type gdb figM_03 to start the GNU debugger.
 

2.

Inserting a breakpoint. Set a breakpoint at line 25 in the source code by typing break 25 (Fig. M.15).
 

Figure M.15. Setting a breakpoint in the program.

 (gdb) break 25
 Breakpoint 1 at 0x8048871: file figM_03.cpp, line 25.
 (gdb)
 
   

3.

Running the program and reaching a breakpoint. Type run to begin the debugging process (Fig. M.16). This will cause main to execute until the breakpoint at line 25 is reached. This suspends program execution and switches the program into break mode. The statement in line 25 is the next statement that will execute.
 

Figure M.16. Running the program until the breakpoint at line 25 is reached.

(This item is displayed on page 1390 in the print version)

 (gdb) run
 Starting program: /home/student/Debug/figM_03
 account1 balance: $50

 Enter withdrawal amount for account1: 13

 attempting to subtract 13 from account1 balance


 Breakpoint 1, main () at figM_03.cpp:25
 25 account1.debit( withdrawalAmount ); // try to subtract from
 account1
 (gdb)
 
   

4.

Evaluating arithmetic and boolean expressions. Recall from Section M.2 that once the program has entered break mode, you can explore the values of the program's variables using the debugger's print command. You can also use the print command to evaluate arithmetic and boolean expressions. Type print withdrawalAmount - 2. Note that the print command returns the value 11 (Fig. M.17). However, this command does not actually change the value of withdrawalAmount. Type print withdrawalAmount == 11. Expressions containing the == symbol are treated as boolean expressions. The value returned is false (Fig. M.17) because withdrawalAmount does not currently contain the value 11withdrawalAmount is still 13.
 


 

Figure M.17. Printing expressions with the debugger.

 (gdb) print withdrawalAmount - 2
 $1 = 11
 (gdb) print withdrawalAmount == 11
 $2 = false
 (gdb)
 

5.

Modifying values. The debugger allows you to change the values of variables during the program's execution. This can be valuable for experimenting with different values and for locating logic errors in programs. You can use the debugger's set command to change the value of a variable. Type set withdrawalAmount = 42. The debugger changes the value of withdrawalAmount. Type print withdrawalAmount to display its new value (Fig. M.18).
 

Figure M.18. Setting the value of a variable while in break mode.

 (gdb) set withdrawalAmount = 42
 (gdb) print withdrawalAmount
 $3 = 42
 (gdb)
 
   

6.

Viewing the program result. Type continue to continue program execution. Line 25 of Fig. M.3 executes, passing withdrawalAmount to Account member function debit. Function main then displays the new balance. Note that the result is $8 (Fig. M.19). This shows that the preceding step changed the value of withdrawalAmount from its initial value (13) to 42.
 

Figure M.19. Using a modified variable in the execution of a program.

(This item is displayed on page 1391 in the print version)

 (gdb) continue
 Continuing.
 account1 balance: $8

 Program exited normally.
 (gdb)
 
   

7.

Using the quit command. Use the quit command to end the debugging session (Fig. M.20). This command causes the debugger to terminate.
 

Figure M.20. Exiting the debugger using the quit command.

(This item is displayed on page 1391 in the print version)

 (gdb) quit
 ~/Debug$
 

In this section, you learned how to use the debugger's print command to evaluate arithmetic and boolean expressions. You also learned how to use the set command to modify the value of a variable during your program's execution.


Introduction to Computers, the Internet and World Wide Web

Introduction to C++ Programming

Introduction to Classes and Objects

Control Statements: Part 1

Control Statements: Part 2

Functions and an Introduction to Recursion

Arrays and Vectors

Pointers and Pointer-Based Strings

Classes: A Deeper Look, Part 1

Classes: A Deeper Look, Part 2

Operator Overloading; String and Array Objects

Object-Oriented Programming: Inheritance

Object-Oriented Programming: Polymorphism

Templates

Stream Input/Output

Exception Handling

File Processing

Class string and String Stream Processing

Web Programming

Searching and Sorting

Data Structures

Bits, Characters, C-Strings and structs

Standard Template Library (STL)

Other Topics

Appendix A. Operator Precedence and Associativity Chart

Appendix B. ASCII Character Set

Appendix C. Fundamental Types

Appendix D. Number Systems

Appendix E. C Legacy Code Topics

Appendix F. Preprocessor

Appendix G. ATM Case Study Code

Appendix H. UML 2: Additional Diagram Types

Appendix I. C++ Internet and Web Resources

Appendix J. Introduction to XHTML

Appendix K. XHTML Special Characters

Appendix L. Using the Visual Studio .NET Debugger

Appendix M. Using the GNU C++ Debugger

Bibliography



C++ How to Program
C++ How to Program (5th Edition)
ISBN: 0131857576
EAN: 2147483647
Year: 2004
Pages: 627

Flylib.com © 2008-2020.
If you may any questions please contact us: flylib@qtcs.net