The "unknown source" is correct. At that time the source is not yet known. It becomes known when your lib is loaded, and gdb will then update the breakpoint.
Only:
TCmdLineDebugger.ReadLn "=library-loaded,id="/usr/lib/libscejson.so",target-name="/usr/lib/libscejson.so",host-name="/usr/lib/libscejson.so",symbols-loaded="0",thread-group="i1""
It does not become known. Because gdb does not find your debug info.
Since you have a .dbg file you use external debug info. I never tested this, but it still could work.
I assume at this point, that gdb looks for it in
/usr/lib/libscejson.dbg
But since your lib is a link, the dbg file is not there?
Various solutions to try:
1) ensure the dbg file can be found
2) switch off external debug info
3) use LD_LIBRARY_PATH (and remove the symlink)
I recommend 3.
Because you can test your lib, without interfering with your real libs.
Just go to run params, and set it as env var. pointing to where your lib is.
-----------
When you try to fix it, watch the logfile, and see if gdb does load any symbols.
-------------
Also check your global options, and check that the following is
NOT set
http://wiki.lazarus.freepascal.org/GDB_Debugger_Tips#SigSegV_-_and_continue_debuggingThough according to the log, it is not set. So should already be ok.