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.
next 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: linkBe 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).