I can set a breakpoint in main and debug the code with the correct source code, but I don't know where GDB is taking the source code from.
The source code is no开发者_开发技巧t present in CWD (current working directory).
How do I find from which location GDB is taking the code?
You can use the GDB command:
info source
Sample output:
Current source file is a.c
Compilation directory is /home/user/test
Located in /home/user/test/a.c
Contains 17 lines.
Source language is c.
Compiled with DWARF 2 debugging format.
Includes preprocessor macro info.
Use
(gdb) show directories
If you don't know where those directories are set, check your .gdbinit file to see if there are statements like
directory /path/to/source
See also this other Stack Overflow question about GDB.
This information is kept in the binary in the DWARF2 format. So, in order to see the DWARF2 information, you can use the dwarfdump utility. Needed information is kept in the DW_AT_comp_dir field.
The binary is probably compiled with "-g" - i.e. debugging.
Use the GDB "show directories" command to see the source search path.
精彩评论