Eric Pouech : winedbg: No longer hide current WineDbg process from 'info proc'.

Alexandre Julliard julliard at winehq.org
Wed Jun 29 16:25:53 CDT 2022


Module: wine
Branch: master
Commit: f8d3c2b2030b1a59a329e646caeb614167a24b5c
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=f8d3c2b2030b1a59a329e646caeb614167a24b5c

Author: Eric Pouech <eric.pouech at gmail.com>
Date:   Wed Jun 29 13:11:40 2022 +0200

winedbg: No longer hide current WineDbg process from 'info proc'.

We used to hide current WineDbg instance when displaying processes' list
(command 'info proc'). This can potentially generate some "dangling"
processes in the hierarchy (related to this WineDbg instance):
- conhost.exe
- start.exe (when launched from unix shell without full path
  to winedbg.exe)

Also, print a more comprehensive error message when trying to attach to
itself (now that debugger's PID is more easily available).

Signed-off-by: Eric Pouech <eric.pouech at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 programs/winedbg/info.c       | 17 ++++++++++-------
 programs/winedbg/tgt_active.c |  7 ++++++-
 2 files changed, 16 insertions(+), 8 deletions(-)

diff --git a/programs/winedbg/info.c b/programs/winedbg/info.c
index bb933aeb455..ae0fd90e938 100644
--- a/programs/winedbg/info.c
+++ b/programs/winedbg/info.c
@@ -498,14 +498,18 @@ static unsigned get_parent(const struct dump_proc* dp, unsigned idx)
 static void dump_proc_info(const struct dump_proc* dp, unsigned idx, unsigned depth)
 {
     struct dump_proc_entry* dpe;
+    char info;
     for ( ; idx != -1; idx = dp->entries[idx].sibling)
     {
         assert(idx < dp->count);
         dpe = &dp->entries[idx];
-        dbg_printf("%c%08lx %-8ld ",
-                   (dpe->proc.th32ProcessID == (dbg_curr_process ?
-                                                dbg_curr_process->pid : 0)) ? '>' : ' ',
-                   dpe->proc.th32ProcessID, dpe->proc.cntThreads);
+        if (dbg_curr_process && dpe->proc.th32ProcessID == dbg_curr_process->pid)
+            info = '>';
+        else if (dpe->proc.th32ProcessID == GetCurrentProcessId())
+            info = '=';
+        else
+            info = ' ';
+        dbg_printf("%c%08lx %-8ld ", info, dpe->proc.th32ProcessID, dpe->proc.cntThreads);
         if (depth)
         {
             unsigned i;
@@ -537,11 +541,10 @@ void info_win32_processes(void)
         dp.entries[dp.count].proc.dwSize = sizeof(dp.entries[dp.count].proc);
         ok = Process32First(snap, &dp.entries[dp.count].proc);
 
-        /* fetch all process information into dp (skipping this debugger) */
+        /* fetch all process information into dp */
         while (ok)
         {
-            if (dp.entries[dp.count].proc.th32ProcessID != GetCurrentProcessId())
-                dp.entries[dp.count++].children = -1;
+            dp.entries[dp.count++].children = -1;
             if (dp.count >= dp.alloc)
             {
                 dp.entries = HeapReAlloc(GetProcessHeap(), 0, dp.entries, sizeof(*dp.entries) * (dp.alloc *= 2));
diff --git a/programs/winedbg/tgt_active.c b/programs/winedbg/tgt_active.c
index c17a6f38290..9e11de69bc9 100644
--- a/programs/winedbg/tgt_active.c
+++ b/programs/winedbg/tgt_active.c
@@ -70,9 +70,14 @@ static unsigned dbg_handle_debug_event(DEBUG_EVENT* de);
  */
 BOOL dbg_attach_debuggee(DWORD pid)
 {
+    if (pid == GetCurrentProcessId())
+    {
+        dbg_printf("WineDbg can't debug its own process. Please use another process ID.\n");
+        return FALSE;
+    }
     if (!(dbg_curr_process = dbg_add_process(&be_process_active_io, pid, 0))) return FALSE;
 
-    if (!DebugActiveProcess(pid)) 
+    if (!DebugActiveProcess(pid))
     {
         dbg_printf("Can't attach process %04lx: error %lu\n", pid, GetLastError());
         dbg_del_process(dbg_curr_process);




More information about the wine-cvs mailing list