That should already be the case. At least in 15.08.x, the spec file contains:
%define __os_install_post /usr/lib/rpm/brp-compress
%define debug_package %{nil}
The first line has the effect of disabling the stripping of binaries
(among other things). The second line prevents the -debuginfo
packages from being generated. With both of these in place, the end
result is that the final packaged binaries and libraries should keep
whatever symbol table info was built into them. I can confirm that
the RPMs I build on my systems have this debugging info in them.
Michael, make sure when you build SLURM RPMs, you are supplying the
"--with debug" flag to rpmbuild. This will ensure that the correct
debugging symbols are compiled into the final binaries so you can
debug them. This will both (1) add debugging symbols ("-g") and (2)
turn off optimization ("-O0") to facilitate the use of gdb.
HTH,
Michael
On Wed, Apr 27, 2016 at 7:51 AM, Andy Riebs <[email protected]> wrote:
> [Apologies to the list if someone has already responded to Michael, but I
> don't recall seeing it.]
>
> Hi Michael,
>
> By far the easiest way to debug Slurm problems is by doing your own, local
> build, outside the context of RPM. You can find appropriate ./configure
> arguments (at least to start) in the slurm.spec file, then do the standard
>
> $ ./configure {args }
> $ make
> $ make install
> (and, optionally,)
> $ make contrib-install
>
> Alternatively, if you really like the rpmbuild approach, there is probably
> an argument in the spec file to either
>
> Generate a debuginfo rpm
> Skip stripping the debug info
>
> HTH!
>
> Andy
>
>
> On 04/25/2016 12:20 PM, Michael Kit Gilbert wrote:
>
> Hello everyone,
>
> I'm trying to troubleshoot a problem with a local patch I'm writing for
> Slurm and can't seem to get gdb working properly. I've built the rpms with
> -D '%_with_cflags CFLAGS="-O0 -g3"' and slurmctld and slurmd appear to be
> starting normally. However, when I try to attach gdb to the slurmd process,
> I get an error "Missing separate debuginfos, use: debuginfo-install
> slurm-15.08.4-1.el6.x86_64". I haven't had any luck finding debuginfo rpms
> for slurm-15.
>
> Hoping it was just a minor issue, I continued with debugging and here's what
> I got:
>
> [root@head slurm_uid_patch]# gdb slurmd 26127
> GNU gdb (GDB) Red Hat Enterprise Linux (7.2-60.el6_4.1)
> Copyright (C) 2010 Free Software Foundation, Inc.
> License GPLv3+: GNU GPL version 3 or later
> <http://gnu.org/licenses/gpl.html>
> This is free software: you are free to change and redistribute it.
> There is NO WARRANTY, to the extent permitted by law.� Type "show copying"
> and "show warranty" for details.
> This GDB was configured as "x86_64-redhat-linux-gnu".
> For bug reporting instructions, please see:
> <http://www.gnu.org/software/gdb/bugs/>...
> Reading symbols from /usr/sbin/slurmd...done.
> Attaching to program: /usr/sbin/slurmd, process 26127
> Reading symbols from /lib64/libdl.so.2...Reading symbols from
> /usr/lib/debug/lib64/libdl-2.12.so.debug...done.
> done.
> Loaded symbols for /lib64/libdl.so.2
> Reading symbols from /lib64/libpthread.so.0...Reading symbols from
> /usr/lib/debug/lib64/libpthread-2.12.so.debug...done.
> [Thread debugging using libthread_db enabled]
> done.
> Loaded symbols for /lib64/libpthread.so.0
> Reading symbols from /lib64/libc.so.6...Reading symbols from
> /usr/lib/debug/lib64/libc-2.12.so.debug...done.
> done.
> Loaded symbols for /lib64/libc.so.6
> Reading symbols from /lib64/ld-linux-x86-64.so.2...Reading symbols from
> /usr/lib/debug/lib64/ld-2.12.so.debug...done.
> done.
> Loaded symbols for /lib64/ld-linux-x86-64.so.2
> Reading symbols from /usr/lib64/slurm/select_cons_res.so...done.
> Loaded symbols for /usr/lib64/slurm/select_cons_res.so
> Reading symbols from /usr/lib64/slurm/gres_nic.so...done.
> Loaded symbols for /usr/lib64/slurm/gres_nic.so
> Reading symbols from /usr/lib64/slurm/topology_none.so...done.
> Loaded symbols for /usr/lib64/slurm/topology_none.so
> Reading symbols from /usr/lib64/slurm/route_default.so...done.
> Loaded symbols for /usr/lib64/slurm/route_default.so
> Reading symbols from /usr/lib64/slurm/proctrack_cgroup.so...done.
> Loaded symbols for /usr/lib64/slurm/proctrack_cgroup.so
> Reading symbols from /usr/lib64/slurm/task_cgroup.so...done.
> Loaded symbols for /usr/lib64/slurm/task_cgroup.so
> Reading symbols from /usr/lib64/slurm/auth_munge.so...done.
> Loaded symbols for /usr/lib64/slurm/auth_munge.so
> Reading symbols from /usr/lib64/libmunge.so.2...(no debugging symbols
> found)...done.
> Loaded symbols for /usr/lib64/libmunge.so.2
> Reading symbols from /usr/lib64/slurm/crypto_munge.so...done.
> Loaded symbols for /usr/lib64/slurm/crypto_munge.so
> Reading symbols from /usr/lib64/slurm/jobacct_gather_none.so...done.
> Loaded symbols for /usr/lib64/slurm/jobacct_gather_none.so
> Reading symbols from /usr/lib64/slurm/job_container_none.so...done.
> Loaded symbols for /usr/lib64/slurm/job_container_none.so
> Reading symbols from /usr/lib64/slurm/core_spec_none.so...done.
> Loaded symbols for /usr/lib64/slurm/core_spec_none.so
> Reading symbols from /usr/lib64/slurm/switch_none.so...done.
> Loaded symbols for /usr/lib64/slurm/switch_none.so
> Reading symbols from /usr/lib64/slurm/acct_gather_energy_none.so...done.
> Loaded symbols for /usr/lib64/slurm/acct_gather_energy_none.so
> Reading symbols from /usr/lib64/slurm/acct_gather_profile_none.so...done.
> Loaded symbols for /usr/lib64/slurm/acct_gather_profile_none.so
> Reading symbols from /usr/lib64/slurm/acct_gather_infiniband_none.so...done.
> Loaded symbols for /usr/lib64/slurm/acct_gather_infiniband_none.so
> Reading symbols from /usr/lib64/slurm/acct_gather_filesystem_none.so...done.
> Loaded symbols for /usr/lib64/slurm/acct_gather_filesystem_none.so
> 0x0000003fd240eadd in accept () at ../sysdeps/unix/syscall-template.S:82
> 82 � � �T_PSEUDO (SYSCALL_SYMBOL, SYSCALL_NAME, SYSCALL_NARGS)
> Missing separate debuginfos, use: debuginfo-install
> slurm-15.08.4-1.el6.x86_64
> (gdb) bt
> #0 �0x0000003fd240eadd in accept () at
> ../sysdeps/unix/syscall-template.S:82
> #1 �0x00000000004df938 in slurm_accept_msg_conn ()
> #2 �0x0000000000427f0c in _msg_engine ()
> #3 �0x0000000000427c61 in main ()
> (gdb) thread apply all bt full
>
> Thread 1 (Thread 0x7f684747c700 (LWP 26127)):
> #0 �0x0000003fd240eadd in accept () at
> ../sysdeps/unix/syscall-template.S:82
> No locals.
> #1 �0x00000000004df938 in slurm_accept_msg_conn ()
> No symbol table info available.
> #2 �0x0000000000427f0c in _msg_engine ()
> No symbol table info available.
> #3 �0x0000000000427c61 in main ()
> No symbol table info available.
>
> I found a post where someone had recommended to do "thread apply all bt
> full", so I did that as well. This call is in bold text above.
>
> Does anyone have any ideas as to how I can get debugging to work?
>
> Thanks!
>
> Mike
>
>
--
Michael Jennings <[email protected]>
Senior HPC Systems Engineer
High-Performance Computing Services
Lawrence Berkeley National Laboratory
Bldg 50B-3209E W: 510-495-2687
MS 050B-3209 F: 510-486-8615