public inbox for gdb-prs@sourceware.org
help / color / mirror / Atom feed
From: "asmwarrior at gmail dot com" <sourceware-bugzilla@sourceware.org>
To: gdb-prs@sourceware.org
Subject: [Bug gdb/17659] New: [win32] GDB failed to get dll names when handling LOAD_DLL_DEBUG_EVENT event
Date: Fri, 28 Nov 2014 01:10:00 -0000	[thread overview]
Message-ID: <bug-17659-4717@http.sourceware.org/bugzilla/> (raw)

https://sourceware.org/bugzilla/show_bug.cgi?id=17659

            Bug ID: 17659
           Summary: [win32] GDB failed to get dll names when handling
                    LOAD_DLL_DEBUG_EVENT event
           Product: gdb
           Version: HEAD
            Status: NEW
          Severity: normal
          Priority: P2
         Component: gdb
          Assignee: unassigned at sourceware dot org
          Reporter: asmwarrior at gmail dot com

Hi, I see that some dlls are not listed when I type the "info shared" command
under my Windows XP system. Thus, I can't set debug into the missing dll(such
as I can't set a break point in the missing dll)

I exam the source code a little, and found that we have a function named:
static char *
get_image_name (HANDLE h, void *address, int unicode)

Which try to get the loaded dll name, but after debugged for a while, I see
that for some dlls (not only the ntdll.dll, but there are other dlls), this
function failed to get the image name of the dll. This is due to the condition
that:

  /* See if we could read the address of a string, and that the
     address isn't null.  */
  if (!ReadProcessMemory (h, address,  &address_ptr,
              sizeof (address_ptr), &done)
      || done != sizeof (address_ptr) || !address_ptr)
    return NULL;

Here, the address_ptr is NULL.

By looking at MSDN, I see that this value could be NULL, see:
[LOAD_DLL_DEBUG_INFO structure
(Windows)](http://msdn.microsoft.com/en-us/library/windows/desktop/ms680351(v=vs.85).aspx),
as said by MSDN, the value lpImageName could not contains any information.

So, I think the correct way to get the dll name is to through the hFile value
of the LOAD_DLL_DEBUG_INFO, I see many articles saying about this, E.g.:
[Writing Windows Debugger - Part 2 -
CodeProject](http://www.codeproject.com/Articles/132742/Writing-Windows-Debugger-Part),
it refer to a function named: GetFileNameFromHandle(), this function can also
be seen from MSDN in the page:

[Obtaining a File Name From a File Handle
(Windows)](http://msdn.microsoft.com/en-us/library/windows/desktop/aa366789(v=vs.85).aspx)

But to use this function, we need to include the psapi.dll under WindowsXP,
which need link to libpsapi.a in MinGW. I don't tried it yet.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


             reply	other threads:[~2014-11-28  1:10 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-28  1:10 asmwarrior at gmail dot com [this message]
2021-04-05 17:41 ` [Bug gdb/17659] " eliz at gnu dot org
2021-04-06 15:22 ` eliz at gnu dot org
2021-04-06 15:24 ` eliz at gnu dot org
2021-04-10  8:47 ` eliz at gnu dot org

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=bug-17659-4717@http.sourceware.org/bugzilla/ \
    --to=sourceware-bugzilla@sourceware.org \
    --cc=gdb-prs@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).