.GDB breakpoint default source file works for symbolic links
Previously, the GDB debugger could not locate the symbol table information for the default source file, if the file was a symbolic link. As a consequence, users could not set breakpoints by omitting the source file name and using the default, such as `break 63`. This bug has been fixed and users can now use default source files with breakpoints for files behind symbolic links.
Created attachment 1493891[details]
Sample code bitmapSort.c to reproduce the issue with
Description of problem:
Setting break on a binary loaded in gdb, which has been compiled from a file which is a symbolic link to a file with different name throws below error:
(gdb) b 15
No line 15 in the current file.
Make breakpoint pending on future shared library load? (y or [n])
Pressing "y" at this point, before punching run command, has no effect and process exits through it normally. Instead specifying breakpoint in the format <file name>:<linenum> works as expected:
(gdb) b bitmapS.c:15
Breakpoint 2 at 0x40088c: file bitmapS.c, line 15.
Version-Release number of selected component (if applicable):
gdb-7.6.1-110.el7
How reproducible:
Always
Steps to Reproduce:
1. move the attached reproducer program bitmapSort.c to /tmp
# mv bitmapSort.c /tmp
2. Create a symbolic link to /tmp/bitmapSort.c with a different name
# cd
# ln -s /tmp/bitmapSort.c bitmapS.c
3. Compile bitmapS.c to produce a binary and load in gdb and try to set breakpoint specifying just line number:
# gcc -o bitmapS -lm -g bitmapS.c
# gdb ./bitmapS
(gdb) b 15
Actual results:
Breakpoint is not set just with <linenum> format, whereas setting breakpoing in <filename>:<linume> does work as expected.
Expected results:
Breakpoint with just <linenum> format should work.
Additional info:
Same was working fine in RHEL-6.
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.
For information on the advisory, and where to find the updated
files, follow the link below.
If the solution does not work for you, open a new bug report.
https://access.redhat.com/errata/RHBA-2019:2213
Created attachment 1493891 [details] Sample code bitmapSort.c to reproduce the issue with Description of problem: Setting break on a binary loaded in gdb, which has been compiled from a file which is a symbolic link to a file with different name throws below error: (gdb) b 15 No line 15 in the current file. Make breakpoint pending on future shared library load? (y or [n]) Pressing "y" at this point, before punching run command, has no effect and process exits through it normally. Instead specifying breakpoint in the format <file name>:<linenum> works as expected: (gdb) b bitmapS.c:15 Breakpoint 2 at 0x40088c: file bitmapS.c, line 15. Version-Release number of selected component (if applicable): gdb-7.6.1-110.el7 How reproducible: Always Steps to Reproduce: 1. move the attached reproducer program bitmapSort.c to /tmp # mv bitmapSort.c /tmp 2. Create a symbolic link to /tmp/bitmapSort.c with a different name # cd # ln -s /tmp/bitmapSort.c bitmapS.c 3. Compile bitmapS.c to produce a binary and load in gdb and try to set breakpoint specifying just line number: # gcc -o bitmapS -lm -g bitmapS.c # gdb ./bitmapS (gdb) b 15 Actual results: Breakpoint is not set just with <linenum> format, whereas setting breakpoing in <filename>:<linume> does work as expected. Expected results: Breakpoint with just <linenum> format should work. Additional info: Same was working fine in RHEL-6.