mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* why can't i use gdb to dump module variables anymore?
@ 2010-07-08 11:51 Robert P. J. Day
       [not found] ` <7C33277E-D90E-4459-8580-59C5EFB2D66D@jonmasters.org>
  0 siblings, 1 reply; 4+ messages in thread
From: Robert P. J. Day @ 2010-07-08 11:51 UTC (permalink / raw)
  To: Linux Kernel Mailing List


  trying very hard to make a long story short, documenting how to use
gdb to poke around in a loaded module.  the important part of the
module (to demonstrate the visibility of different types of
variables):

static int rpjday_1;
int rpjday_2 = 20;
int rpjday_3 = 30;

EXPORT_SYMBOL(rpjday_3);


  once i load that module, i can see the good stuff in /proc/kallsyms:

$ grep rpjday /proc/kallsyms
ffffffffa007c090 r __ksymtab_rpjday_3	[crash_gdb]
ffffffffa007c0a8 r __kstrtab_rpjday_3	[crash_gdb]
ffffffffa007c0a0 r __kcrctab_rpjday_3	[crash_gdb]
ffffffffa007c0b4 d rpjday_2	[crash_gdb]
ffffffffa007c0b8 D rpjday_3	[crash_gdb]
$

  i can examine the salient files under
/sys/module/crash_gdb/sections/, like .data

0xffffffffa007c0b4

so here's a couple questions.

  if i want to add that module's symbol table info to my running gdb
session, i would use "add-symbol-file" but the first arg *must* be the
address of the text section and this module has *no* .text section.
so what do i use for that value?  the address of the .exit.text
section?

  and if i try to load:

(gdb) add-symbol-file /tmp/crash_gdb.ko 0xffffffffa007c000 \
-s .data 0xffffffffa007c0b4
add symbol table from file "/tmp/crash_gdb.ko" at
	.text_addr = 0xffffffffa007c000
	.data_addr = 0xffffffffa007c0b4
(y or n) y
Reading symbols from /tmp/crash_gdb.ko...done.
(gdb)

  it certainly *looks* like that worked, and:

(gdb) whatis rpjday_2
type = int
(gdb) whatis rpjday_3
type = int

  looks good, but here's where things go wrong:

(gdb) p rpjday_2
Cannot access memory at address 0xffffffffa007c0b4
(gdb) p rpjday_3
Cannot access memory at address 0xffffffffa007c0b8

  that sort of thing used to work when i was testing this on a 32-bit
fedora system, but i'm now on 64-but ubuntu and i don't see why those
last couple commands no longer work.  the addresses certainly match
what's in /proc/kallsyms, and i don't recall having to do anything
special last time.  have i omitted a critical compile-time option for
this?  thanks.

rday

-- 

========================================================================
Robert P. J. Day                               Waterloo, Ontario, CANADA

        Top-notch, inexpensive online Linux/OSS/kernel courses
                        http://crashcourse.ca

Twitter:                                       http://twitter.com/rpjday
LinkedIn:                               http://ca.linkedin.com/in/rpjday
========================================================================

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2010-08-10 12:12 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-07-08 11:51 why can't i use gdb to dump module variables anymore? Robert P. J. Day
     [not found] ` <7C33277E-D90E-4459-8580-59C5EFB2D66D@jonmasters.org>
2010-08-09 16:06   ` Robert P. J. Day
2010-08-10 12:01     ` Jason Wessel
2010-08-10 12:12       ` Robert P. J. Day

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®