1

OS is Windows, GCC is 4.7.2, GDB is 7.3.

I have a .c file in the C:/project/src/ folder with an include:

#include "../inc/header.h"

After the compilation I have a relative path in the debug symbols:

> objdump -WL obj.o | grep header.h
C:/project/src/../inc/header.h
...

Yet I want it to be C:/project/inc/header.h, because setting BPs in gdb fail for me if I use absolute paths when issuing the set breakpoint command.

This situation is artificial, but due to the environmental conditions the only solution to my issue will be either absolute paths generation in the debug symbols or teaching GDB to resolve relative paths.

Is there a switch for GCC to turn on the absolute path generation in the debug symbols?

Dmitry Polyanitsa
  • 1,083
  • 9
  • 18

1 Answers1

2

The solution is in GDB, not GCC.

The easiest way is to add the directory containing the header to the search path:

(gdb) directory /path/to/include/

A more complicated one that you might need is pathname substitution rules:

(gdb) set substitute-path ../inc /path/to/inc
ams
  • 24,923
  • 4
  • 54
  • 75
  • 1
    Yes, that would work, yet I can not accept this as an answer. My question is rather specific. I'm writing a tool that uses GDB over MI and feeds to it absolute paths only. I want my tool's end-users to not think about the #include paths format and that's why I need to either provide them with a work-around (GCC option) or to set up the GDB appropriately. If neither can be done then all I could think of is to manually parse the symbols and to calculate the substitutions. – Dmitry Polyanitsa Nov 13 '12 at 16:10