[review] Report GetLastError value when DebugActiveProcess fails

Message ID gerrit.1573749658000.Ie1bf502a0d96bb7c09bd5b1c5e0c924ba58cd68c@gnutoolchain-gerrit.osci.io
State New, archived
Headers

Commit Message

Simon Marchi (Code Review) Nov. 14, 2019, 4:40 p.m. UTC
  Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/629
......................................................................

Report GetLastError value when DebugActiveProcess fails

When DebugActiveProcess fails, the error message is fairly generic:

    error (_("Can't attach to process."));

It would be more useful for diagnosing problems if the Windows error
code was included in the message.  This patch implements this.

gdb/ChangeLog
2019-11-14  Tom Tromey  <tromey@adacore.com>

	* windows-nat.c (windows_nat_target::attach): Include GetLastError
	result in error when DebugActiveProcess fails.

Change-Id: Ie1bf502a0d96bb7c09bd5b1c5e0c924ba58cd68c
---
M gdb/ChangeLog
M gdb/windows-nat.c
2 files changed, 7 insertions(+), 1 deletion(-)
  

Comments

Eli Zaretskii Nov. 14, 2019, 4:54 p.m. UTC | #1
> Date: Thu, 14 Nov 2019 11:40:58 -0500
> From: "Tom Tromey (Code Review)" <gerrit@gnutoolchain-gerrit.osci.io>
> 
> --- a/gdb/windows-nat.c
> +++ b/gdb/windows-nat.c
> @@ -1983,7 +1983,8 @@
>  #endif
>  
>    if (!ok)
> -    error (_("Can't attach to process."));
> +    error (_("Can't attach to process %u (error %u)"),
> +	   (unsigned) pid, (unsigned) GetLastError ());

Why not show the text that corresponds to the error code?  A lone code
is not very descriptive, IME.
  
Tom Tromey Nov. 14, 2019, 4:58 p.m. UTC | #2
>>>>> "Eli" == Eli Zaretskii <eliz@gnu.org> writes:

>> Date: Thu, 14 Nov 2019 11:40:58 -0500
>> From: "Tom Tromey (Code Review)" <gerrit@gnutoolchain-gerrit.osci.io>
>> 
>> --- a/gdb/windows-nat.c
>> +++ b/gdb/windows-nat.c
>> @@ -1983,7 +1983,8 @@
>> #endif
>> 
>> if (!ok)
>> -    error (_("Can't attach to process."));
>> +    error (_("Can't attach to process %u (error %u)"),
>> +	   (unsigned) pid, (unsigned) GetLastError ());

Eli> Why not show the text that corresponds to the error code?  A lone code
Eli> is not very descriptive, IME.

I plan to do that in the future.  I didn't do it yet because there's no
convenient way to do it (there's a helper function in gdbserver but not
gdb; but maybe we're going to use some gnulib thing instead?); and
because doing a good job would mean fixing all such calls in
windows-nat.c.

Meanwhile, I needed this one.

Tom
  
Simon Marchi (Code Review) Nov. 19, 2019, 3:33 p.m. UTC | #3
Tom Tromey has posted comments on this change.

Change URL: https://gnutoolchain-gerrit.osci.io/r/c/binutils-gdb/+/629
......................................................................


Patch Set 1:

I'm checking this in now.
  

Patch

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 719574f..f709df7 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@ 
+2019-11-14  Tom Tromey  <tromey@adacore.com>
+
+	* windows-nat.c (windows_nat_target::attach): Include GetLastError
+	result in error when DebugActiveProcess fails.
+
 2019-11-14  Simon Marchi  <simon.marchi@polymtl.ca>
 
 	* unittests/vec-utils-selftests.c (unordered_remove_tests::obj):
diff --git a/gdb/windows-nat.c b/gdb/windows-nat.c
index 5901f63..fdc21f3 100644
--- a/gdb/windows-nat.c
+++ b/gdb/windows-nat.c
@@ -1983,7 +1983,8 @@ 
 #endif
 
   if (!ok)
-    error (_("Can't attach to process."));
+    error (_("Can't attach to process %u (error %u)"),
+	   (unsigned) pid, (unsigned) GetLastError ());
 
   DebugSetProcessKillOnExit (FALSE);