[PATCH] kernel32: Don't clear WINEDEBUG in the debugger process if +winedbg is set.
Zebediah Figura
z.figura12 at gmail.com
Wed Aug 15 20:34:00 CDT 2018
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
---
This provides a way to debug winedbg.exe itself, which is otherwise
practically impossible.
Inspired by bug 45369.
dlls/kernel32/except.c | 18 +++++++++++-------
1 file changed, 11 insertions(+), 7 deletions(-)
diff --git a/dlls/kernel32/except.c b/dlls/kernel32/except.c
index bff8ce2..98f0d9f 100644
--- a/dlls/kernel32/except.c
+++ b/dlls/kernel32/except.c
@@ -54,6 +54,7 @@
#include "wine/debug.h"
WINE_DEFAULT_DEBUG_CHANNEL(seh);
+WINE_DECLARE_DEBUG_CHANNEL(winedbg);
static PTOP_LEVEL_EXCEPTION_FILTER top_filter;
@@ -289,15 +290,18 @@ static BOOL start_debugger(PEXCEPTION_POINTERS epointers, HANDLE hEvent)
/* make WINEDEBUG empty in the environment */
env = GetEnvironmentStringsA();
- for (p = env; *p; p += strlen(p) + 1)
+ if (!TRACE_ON(winedbg))
{
- if (!memcmp( p, "WINEDEBUG=", sizeof("WINEDEBUG=")-1 ))
+ for (p = env; *p; p += strlen(p) + 1)
{
- char *next = p + strlen(p);
- char *end = next + 1;
- while (*end) end += strlen(end) + 1;
- memmove( p + sizeof("WINEDEBUG=") - 1, next, end + 1 - next );
- break;
+ if (!memcmp( p, "WINEDEBUG=", sizeof("WINEDEBUG=")-1 ))
+ {
+ char *next = p + strlen(p);
+ char *end = next + 1;
+ while (*end) end += strlen(end) + 1;
+ memmove( p + sizeof("WINEDEBUG=") - 1, next, end + 1 - next );
+ break;
+ }
}
}
--
2.7.4
More information about the wine-devel
mailing list