winedbg: Use wide-char string literals.
Signed-off-by: Eric Pouech <eric.pouech@gmail.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
b74a8ab202
commit
14781c7183
|
@ -158,21 +158,17 @@ static void save_crash_log( HWND hwnd )
|
||||||
HANDLE handle;
|
HANDLE handle;
|
||||||
DWORD err, written;
|
DWORD err, written;
|
||||||
WCHAR *p, path[MAX_PATH], buffer[1024];
|
WCHAR *p, path[MAX_PATH], buffer[1024];
|
||||||
static const WCHAR default_name[] = { 'b','a','c','k','t','r','a','c','e','.','t','x','t',0 };
|
|
||||||
static const WCHAR default_ext[] = { 't','x','t',0 };
|
|
||||||
static const WCHAR txt_files[] = { '*','.','t','x','t',0 };
|
|
||||||
static const WCHAR all_files[] = { '*','.','*',0 };
|
|
||||||
|
|
||||||
memset( &save, 0, sizeof(save) );
|
memset( &save, 0, sizeof(save) );
|
||||||
lstrcpyW( path, default_name );
|
lstrcpyW( path, L"backtrace.txt" );
|
||||||
|
|
||||||
LoadStringW( GetModuleHandleW(0), IDS_TEXT_FILES, buffer, ARRAY_SIZE(buffer));
|
LoadStringW( GetModuleHandleW(0), IDS_TEXT_FILES, buffer, ARRAY_SIZE(buffer));
|
||||||
p = buffer + lstrlenW(buffer) + 1;
|
p = buffer + lstrlenW(buffer) + 1;
|
||||||
lstrcpyW(p, txt_files);
|
lstrcpyW(p, L"*.txt");
|
||||||
p += lstrlenW(p) + 1;
|
p += lstrlenW(p) + 1;
|
||||||
LoadStringW( GetModuleHandleW(0), IDS_ALL_FILES, p, ARRAY_SIZE(buffer) - (p - buffer) );
|
LoadStringW( GetModuleHandleW(0), IDS_ALL_FILES, p, ARRAY_SIZE(buffer) - (p - buffer) );
|
||||||
p += lstrlenW(p) + 1;
|
p += lstrlenW(p) + 1;
|
||||||
lstrcpyW(p, all_files);
|
lstrcpyW(p, L"*.*");
|
||||||
p += lstrlenW(p) + 1;
|
p += lstrlenW(p) + 1;
|
||||||
*p = '\0';
|
*p = '\0';
|
||||||
|
|
||||||
|
@ -184,7 +180,7 @@ static void save_crash_log( HWND hwnd )
|
||||||
save.nMaxFile = MAX_PATH;
|
save.nMaxFile = MAX_PATH;
|
||||||
save.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_OVERWRITEPROMPT |
|
save.Flags = OFN_EXPLORER | OFN_PATHMUSTEXIST | OFN_OVERWRITEPROMPT |
|
||||||
OFN_HIDEREADONLY | OFN_ENABLESIZING;
|
OFN_HIDEREADONLY | OFN_ENABLESIZING;
|
||||||
save.lpstrDefExt = default_ext;
|
save.lpstrDefExt = L"txt";
|
||||||
|
|
||||||
if (!GetSaveFileNameW( &save )) return;
|
if (!GetSaveFileNameW( &save )) return;
|
||||||
handle = CreateFileW( save.lpstrFile, GENERIC_WRITE, FILE_SHARE_READ,
|
handle = CreateFileW( save.lpstrFile, GENERIC_WRITE, FILE_SHARE_READ,
|
||||||
|
@ -214,7 +210,6 @@ static void save_crash_log( HWND hwnd )
|
||||||
|
|
||||||
static INT_PTR WINAPI crash_dlg_proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
static INT_PTR WINAPI crash_dlg_proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
static const WCHAR openW[] = {'o','p','e','n',0};
|
|
||||||
switch (msg)
|
switch (msg)
|
||||||
{
|
{
|
||||||
case WM_INITDIALOG:
|
case WM_INITDIALOG:
|
||||||
|
@ -250,7 +245,7 @@ static INT_PTR WINAPI crash_dlg_proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM
|
||||||
case NM_CLICK:
|
case NM_CLICK:
|
||||||
case NM_RETURN:
|
case NM_RETURN:
|
||||||
if (wParam == IDC_STATIC_TXT2)
|
if (wParam == IDC_STATIC_TXT2)
|
||||||
ShellExecuteW( NULL, openW, ((NMLINK *)lParam)->item.szUrl, NULL, NULL, SW_SHOW );
|
ShellExecuteW( NULL, L"open", ((NMLINK *)lParam)->item.szUrl, NULL, NULL, SW_SHOW );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -272,7 +267,6 @@ static INT_PTR WINAPI crash_dlg_proc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM
|
||||||
|
|
||||||
static INT_PTR WINAPI details_dlg_proc( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam )
|
static INT_PTR WINAPI details_dlg_proc( HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam )
|
||||||
{
|
{
|
||||||
static const WCHAR openW[] = {'o','p','e','n',0};
|
|
||||||
static POINT orig_size, min_size, edit_size, text_pos, save_pos, close_pos;
|
static POINT orig_size, min_size, edit_size, text_pos, save_pos, close_pos;
|
||||||
|
|
||||||
switch (msg)
|
switch (msg)
|
||||||
|
@ -345,7 +339,7 @@ static INT_PTR WINAPI details_dlg_proc( HWND hwnd, UINT msg, WPARAM wparam, LPAR
|
||||||
case NM_CLICK:
|
case NM_CLICK:
|
||||||
case NM_RETURN:
|
case NM_RETURN:
|
||||||
if (wparam == IDC_STATIC_TXT2)
|
if (wparam == IDC_STATIC_TXT2)
|
||||||
ShellExecuteW( NULL, openW, ((NMLINK *)lparam)->item.szUrl, NULL, NULL, SW_SHOW );
|
ShellExecuteW( NULL, L"open", ((NMLINK *)lparam)->item.szUrl, NULL, NULL, SW_SHOW );
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -368,7 +362,6 @@ static INT_PTR WINAPI details_dlg_proc( HWND hwnd, UINT msg, WPARAM wparam, LPAR
|
||||||
|
|
||||||
int display_crash_dialog(void)
|
int display_crash_dialog(void)
|
||||||
{
|
{
|
||||||
static const WCHAR winedeviceW[] = {'w','i','n','e','d','e','v','i','c','e','.','e','x','e',0};
|
|
||||||
static const INITCOMMONCONTROLSEX init = { sizeof(init), ICC_LINK_CLASS };
|
static const INITCOMMONCONTROLSEX init = { sizeof(init), ICC_LINK_CLASS };
|
||||||
|
|
||||||
/* dbg_curr_process->handle is not set */
|
/* dbg_curr_process->handle is not set */
|
||||||
|
@ -380,7 +373,7 @@ int display_crash_dialog(void)
|
||||||
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, dbg_curr_pid);
|
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, dbg_curr_pid);
|
||||||
g_ProgramName = get_program_name(hProcess);
|
g_ProgramName = get_program_name(hProcess);
|
||||||
CloseHandle(hProcess);
|
CloseHandle(hProcess);
|
||||||
if (!wcscmp( g_ProgramName, winedeviceW )) return TRUE;
|
if (!wcscmp( g_ProgramName, L"winedevice.exe" )) return TRUE;
|
||||||
InitCommonControlsEx( &init );
|
InitCommonControlsEx( &init );
|
||||||
return DialogBoxW(GetModuleHandleW(NULL), MAKEINTRESOURCEW(IDD_CRASH_DLG), NULL, crash_dlg_proc);
|
return DialogBoxW(GetModuleHandleW(NULL), MAKEINTRESOURCEW(IDD_CRASH_DLG), NULL, crash_dlg_proc);
|
||||||
}
|
}
|
||||||
|
|
|
@ -294,8 +294,6 @@ static BOOL tgt_process_active_close_process(struct dbg_process* pcs, BOOL kill)
|
||||||
|
|
||||||
void fetch_module_name(void* name_addr, void* mod_addr, WCHAR* buffer, size_t bufsz)
|
void fetch_module_name(void* name_addr, void* mod_addr, WCHAR* buffer, size_t bufsz)
|
||||||
{
|
{
|
||||||
static const WCHAR dlladdr[] = {'D','L','L','_','%','0','8','l','x',0};
|
|
||||||
|
|
||||||
memory_get_string_indirect(dbg_curr_process, name_addr, TRUE, buffer, bufsz);
|
memory_get_string_indirect(dbg_curr_process, name_addr, TRUE, buffer, bufsz);
|
||||||
if (!buffer[0] && !GetModuleFileNameExW(dbg_curr_process->handle, mod_addr, buffer, bufsz))
|
if (!buffer[0] && !GetModuleFileNameExW(dbg_curr_process->handle, mod_addr, buffer, bufsz))
|
||||||
{
|
{
|
||||||
|
@ -308,7 +306,7 @@ void fetch_module_name(void* name_addr, void* mod_addr, WCHAR* buffer, size_t bu
|
||||||
memmove( buffer, buffer + 4, (lstrlenW(buffer + 4) + 1) * sizeof(WCHAR) );
|
memmove( buffer, buffer + 4, (lstrlenW(buffer + 4) + 1) * sizeof(WCHAR) );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
swprintf(buffer, bufsz, dlladdr, (ULONG_PTR)mod_addr);
|
swprintf(buffer, bufsz, L"DLL_%08lx", (ULONG_PTR)mod_addr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -371,8 +369,7 @@ static unsigned dbg_handle_debug_event(DEBUG_EVENT* de)
|
||||||
size = ARRAY_SIZE(u.buffer);
|
size = ARRAY_SIZE(u.buffer);
|
||||||
if (!QueryFullProcessImageNameW( dbg_curr_process->handle, 0, u.buffer, &size ))
|
if (!QueryFullProcessImageNameW( dbg_curr_process->handle, 0, u.buffer, &size ))
|
||||||
{
|
{
|
||||||
static const WCHAR pcspid[] = {'P','r','o','c','e','s','s','_','%','0','8','x',0};
|
swprintf( u.buffer, ARRAY_SIZE(u.buffer), L"Process_%08x", dbg_curr_pid);
|
||||||
swprintf( u.buffer, ARRAY_SIZE(u.buffer), pcspid, dbg_curr_pid);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
WINE_TRACE("%04x:%04x: create process '%s'/%p @%p (%u<%u>)\n",
|
WINE_TRACE("%04x:%04x: create process '%s'/%p @%p (%u<%u>)\n",
|
||||||
|
@ -669,10 +666,9 @@ static BOOL str2int(const char* str, DWORD_PTR* val)
|
||||||
|
|
||||||
static HANDLE create_temp_file(void)
|
static HANDLE create_temp_file(void)
|
||||||
{
|
{
|
||||||
static const WCHAR prefixW[] = {'w','d','b',0};
|
|
||||||
WCHAR path[MAX_PATH], name[MAX_PATH];
|
WCHAR path[MAX_PATH], name[MAX_PATH];
|
||||||
|
|
||||||
if (!GetTempPathW( MAX_PATH, path ) || !GetTempFileNameW( path, prefixW, 0, name ))
|
if (!GetTempPathW( MAX_PATH, path ) || !GetTempFileNameW( path, L"wdb", 0, name ))
|
||||||
return INVALID_HANDLE_VALUE;
|
return INVALID_HANDLE_VALUE;
|
||||||
return CreateFileW( name, GENERIC_READ|GENERIC_WRITE|DELETE, FILE_SHARE_DELETE,
|
return CreateFileW( name, GENERIC_READ|GENERIC_WRITE|DELETE, FILE_SHARE_DELETE,
|
||||||
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, 0 );
|
NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL | FILE_FLAG_DELETE_ON_CLOSE, 0 );
|
||||||
|
|
|
@ -204,7 +204,6 @@ static enum dbg_start minidump_do_reload(struct tgt_process_minidump_data* data)
|
||||||
WCHAR exec_name[1024];
|
WCHAR exec_name[1024];
|
||||||
WCHAR nameW[1024];
|
WCHAR nameW[1024];
|
||||||
unsigned len;
|
unsigned len;
|
||||||
static const WCHAR default_exec_name[] = {'<','m','i','n','i','d','u','m','p','-','e','x','e','c','>',0};
|
|
||||||
|
|
||||||
/* fetch PID */
|
/* fetch PID */
|
||||||
if (MiniDumpReadDumpStream(data->mapping, MiscInfoStream, NULL, &stream, NULL))
|
if (MiniDumpReadDumpStream(data->mapping, MiscInfoStream, NULL, &stream, NULL))
|
||||||
|
@ -215,7 +214,8 @@ static enum dbg_start minidump_do_reload(struct tgt_process_minidump_data* data)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* fetch executable name (it's normally the first one in module list) */
|
/* fetch executable name (it's normally the first one in module list) */
|
||||||
lstrcpyW(exec_name, default_exec_name);
|
lstrcpyW(exec_name, L"<minidump-exec>");
|
||||||
|
|
||||||
if (MiniDumpReadDumpStream(data->mapping, ModuleListStream, NULL, &stream, NULL))
|
if (MiniDumpReadDumpStream(data->mapping, ModuleListStream, NULL, &stream, NULL))
|
||||||
{
|
{
|
||||||
mml = stream;
|
mml = stream;
|
||||||
|
|
|
@ -755,30 +755,20 @@ BOOL types_get_info(const struct dbg_type* type, IMAGEHLP_SYMBOL_TYPE_INFO ti, v
|
||||||
tag == SymTagBaseType &&
|
tag == SymTagBaseType &&
|
||||||
SymGetTypeInfo(dbg_curr_process->handle, type->module, type->id, TI_GET_BASETYPE, &bt))
|
SymGetTypeInfo(dbg_curr_process->handle, type->module, type->id, TI_GET_BASETYPE, &bt))
|
||||||
{
|
{
|
||||||
static const WCHAR voidW[] = {'v','o','i','d','\0'};
|
|
||||||
static const WCHAR charW[] = {'c','h','a','r','\0'};
|
|
||||||
static const WCHAR wcharW[] = {'W','C','H','A','R','\0'};
|
|
||||||
static const WCHAR intW[] = {'i','n','t','\0'};
|
|
||||||
static const WCHAR uintW[] = {'u','n','s','i','g','n','e','d',' ','i','n','t','\0'};
|
|
||||||
static const WCHAR floatW[] = {'f','l','o','a','t','\0'};
|
|
||||||
static const WCHAR boolW[] = {'b','o','o','l','\0'};
|
|
||||||
static const WCHAR longW[] = {'l','o','n','g',' ','i','n','t','\0'};
|
|
||||||
static const WCHAR ulongW[] = {'u','n','s','i','g','n','e','d',' ','l','o','n','g',' ','i','n','t','\0'};
|
|
||||||
static const WCHAR complexW[] = {'c','o','m','p','l','e','x','\0'};
|
|
||||||
const WCHAR* name = NULL;
|
const WCHAR* name = NULL;
|
||||||
|
|
||||||
switch (bt)
|
switch (bt)
|
||||||
{
|
{
|
||||||
case btVoid: name = voidW; break;
|
case btVoid: name = L"void"; break;
|
||||||
case btChar: name = charW; break;
|
case btChar: name = L"char"; break;
|
||||||
case btWChar: name = wcharW; break;
|
case btWChar: name = L"WCHAR"; break;
|
||||||
case btInt: name = intW; break;
|
case btInt: name = L"int"; break;
|
||||||
case btUInt: name = uintW; break;
|
case btUInt: name = L"unsigned int"; break;
|
||||||
case btFloat: name = floatW; break;
|
case btFloat: name = L"float"; break;
|
||||||
case btBool: name = boolW; break;
|
case btBool: name = L"bool"; break;
|
||||||
case btLong: name = longW; break;
|
case btLong: name = L"long int"; break;
|
||||||
case btULong: name = ulongW; break;
|
case btULong: name = L"unsigned long int"; break;
|
||||||
case btComplex: name = complexW; break;
|
case btComplex: name = L"complex"; break;
|
||||||
default: WINE_FIXME("Unsupported basic type %u\n", bt); return FALSE;
|
default: WINE_FIXME("Unsupported basic type %u\n", bt); return FALSE;
|
||||||
}
|
}
|
||||||
X(WCHAR*) = HeapAlloc(GetProcessHeap(), 0, (lstrlenW(name) + 1) * sizeof(WCHAR));
|
X(WCHAR*) = HeapAlloc(GetProcessHeap(), 0, (lstrlenW(name) + 1) * sizeof(WCHAR));
|
||||||
|
|
|
@ -596,7 +596,6 @@ static void restart_if_wow64(void)
|
||||||
|
|
||||||
if (IsWow64Process( GetCurrentProcess(), &is_wow64 ) && is_wow64)
|
if (IsWow64Process( GetCurrentProcess(), &is_wow64 ) && is_wow64)
|
||||||
{
|
{
|
||||||
static const WCHAR winedbgW[] = {'\\','w','i','n','e','d','b','g','.','e','x','e',0};
|
|
||||||
STARTUPINFOW si;
|
STARTUPINFOW si;
|
||||||
PROCESS_INFORMATION pi;
|
PROCESS_INFORMATION pi;
|
||||||
WCHAR filename[MAX_PATH];
|
WCHAR filename[MAX_PATH];
|
||||||
|
@ -606,7 +605,7 @@ static void restart_if_wow64(void)
|
||||||
memset( &si, 0, sizeof(si) );
|
memset( &si, 0, sizeof(si) );
|
||||||
si.cb = sizeof(si);
|
si.cb = sizeof(si);
|
||||||
GetSystemDirectoryW( filename, MAX_PATH );
|
GetSystemDirectoryW( filename, MAX_PATH );
|
||||||
lstrcatW( filename, winedbgW );
|
lstrcatW( filename, L"\\winedbg.exe" );
|
||||||
|
|
||||||
Wow64DisableWow64FsRedirection( &redir );
|
Wow64DisableWow64FsRedirection( &redir );
|
||||||
if (CreateProcessW( filename, GetCommandLineW(), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi ))
|
if (CreateProcessW( filename, GetCommandLineW(), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi ))
|
||||||
|
|
Loading…
Reference in New Issue