Jump to content
xisto Community
Sign in to follow this  
kanade

C/c++ -gdb Linux Debug Tool Simple Gdb tutorial

Recommended Posts

To run the C/C++ file use

 

$ gcc –g –o test sample.cpp

 

To debug the code use following command

 

$ gdb test --- you will get following messages

 

GNU gdb Red Hat Linux (6.3.0.0-1.122rh) Copyright 2004 Free Software Foundation, Inc.

GDB is free software, covered by the GNU General Public License, and you are

welcome to change it and/or distribute copies of it under certain conditions.

Type "show copying" to see the conditions.

There is absolutely no warranty for GDB. Type "show warranty" for details.

This GDB was configured as "i386-redhat-linux-gnu"...Using host libthread_db library "/lib/libthread_db.so.1".

 

(gdb) b 4 -- Set the break point for your code, here I have set for 4th line of the code

 

Breakpoint 1 at 0x8048384: file test2.c, line 4.

 

(gdb) r -- once the break point is set use “r “ to run the code

 

Starting program: /home/tests/test

Reading symbols from shared object read from target memory...done.

Loaded system supplied DSO at 0x8b5000

Breakpoint 1, main () at test2.c:5

5 {

 

(gdb) n -----press “n” to go to next line

 

main () at test2.c:7

7 max=MAX(5,4,3);

 

(gdb) n -----press “n” to go to next line

 

8 printf("\n%d",max);

 

(gdb) print max -----use “print” command to print any variables

 

$1 = 5

 

(gdb)

 

will add some more command to this at later stage.......

Share this post


Link to post
Share on other sites

It would be great if you added some info on debugging programs with threads. I'll take your turn now ;)

 

Typing:

info threads

 

will result in displaying which threads exist in the moment. The numbers in the first column (1, 2 etc.) represent the threads' ids. Once you know these ids, you can switch to corresponding threads like this:

 

thread 2

 

GDB will now be executing that thread in the front, while other threads will continue working in the background. You can use the usual techniques described above (next, quit, step, continue etc.) in this thread.

 

Debugging with threads tends to be complicated since multiple things happen at the same time. One might consider using sleep() in a thread so it doesn't "run away" before you switch to it in the debugger.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

Terms of Use | Privacy Policy | Guidelines | We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.