28

I am writing a C language program on Linux and compiling it using GCC.

I also use a Make file.

I want to debug my program. I don't want to debug a single file, I want to debug the whole program.

How can I do it?

4 Answers 4

33

Compile your code with the -g flag, and then use the gdb debugger. Documentation for gdb is here, but in essence:

gcc -g -o prog myfile.c another.c

and then:

gdb prog

If you want a user-friendly GUI for gdb, take a look at DDD or Insight.

Sign up to request clarification or add additional context in comments.

6 Comments

There's also a graphical interface for gdb named ddd that can be useful if you're having a hard time with getting used to gdb.
i have large no of .c file. according to you i have to include them all. is there any shortest way.
@ambika Just ad the -g to the CFLAGS macro in your makefile
Don't forget -Wall option and making it compile clean.
|
7

I guess that you are building from the command line.

You might want to consider an IDE (Integrated Development Environment), such as KDevelop or Eclipse, etc (hint - Eclipse ... ECLPISE ... E C L I PS E).

Use an IDE to edit your code, refactor your code, examine your code - class tree, click a variable, class or function to jump to declaration, etc, etc

And - of course - to debug:

  • run your code in the IDE
  • set breakpoints to stop at particular lines
  • or just step through, a line at a time
  • examine the call stack to see how you go there
  • examine the current values of variables, to understand your problem
  • change the values of those variables and run to see what happens
  • and more, more, more

p.s as wasatz mentioned- DDD is great - for visualizing the contents of arrays/matrices, and - imo - especially if you have linked lists

Comments

1

You can use gdb-based simple and useful GUI "Nemiver". It can debug your whole module comprising many source files.

enter image description here

Comments

0

Try cgdb

cgdb is a lightweight curses (terminal-based) interface to the GNU Debugger (GDB). In addition to the standard gdb console, cgdb provides a split screen view that displays the source code as it executes. The keyboard interface is modeled after vim, so vim users should feel at home using cgdb.

github repository

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.