From: André Hentschel Subject: [2/3] winedbg: Add the ability to view the backtrace in a window Message-Id: <4EA5A726.6080201@dawncrow.de> Date: Mon, 24 Oct 2011 19:57:58 +0200 --- programs/winedbg/Makefile.in | 2 +- programs/winedbg/crashdlg.c | 155 +++++++++++++++++++++++++++++++++++++++++ programs/winedbg/debugger.h | 2 + programs/winedbg/resource.h | 3 +- programs/winedbg/rsrc_Da.rc | 1 + programs/winedbg/rsrc_De.rc | 3 +- programs/winedbg/rsrc_En.rc | 3 +- programs/winedbg/rsrc_Es.rc | 1 + programs/winedbg/rsrc_Fr.rc | 1 + programs/winedbg/rsrc_He.rc | 1 + programs/winedbg/rsrc_It.rc | 1 + programs/winedbg/rsrc_Ja.rc | 1 + programs/winedbg/rsrc_Ko.rc | 1 + programs/winedbg/rsrc_Lt.rc | 1 + programs/winedbg/rsrc_Nl.rc | 1 + programs/winedbg/rsrc_No.rc | 1 + programs/winedbg/rsrc_Pl.rc | 1 + programs/winedbg/rsrc_Pt.rc | 2 + programs/winedbg/rsrc_Ro.rc | 1 + programs/winedbg/rsrc_Ru.rc | 1 + programs/winedbg/rsrc_Si.rc | 1 + programs/winedbg/rsrc_Sr.rc | 2 + programs/winedbg/rsrc_Sv.rc | 1 + programs/winedbg/rsrc_Uk.rc | 1 + programs/winedbg/tgt_active.c | 3 +- programs/winedbg/winedbg.c | 6 +- 26 files changed, 190 insertions(+), 7 deletions(-) -- Best Regards, André Hentschel diff --git a/programs/winedbg/Makefile.in b/programs/winedbg/Makefile.in index 8170eb8..7dc404d 100644 --- a/programs/winedbg/Makefile.in +++ b/programs/winedbg/Makefile.in @@ -1,6 +1,6 @@ MODULE = winedbg.exe APPMODE = -mconsole -IMPORTS = psapi dbghelp advapi32 +IMPORTS = psapi dbghelp advapi32 comdlg32 DELAYIMPORTS = user32 gdi32 EXTRALIBS = @LIBPOLL@ EXTRADEFS = -DWINE_NO_UNICODE_MACROS diff --git a/programs/winedbg/crashdlg.c b/programs/winedbg/crashdlg.c index 71c1b4b..ed0c312 100644 --- a/programs/winedbg/crashdlg.c +++ b/programs/winedbg/crashdlg.c @@ -2,6 +2,7 @@ * The dialog that displays after a crash * * Copyright 2008 Mikolaj Zalewski + * Copyright 2011 André Hentschel * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -21,6 +22,7 @@ #include "debugger.h" #include "wingdi.h" #include "winuser.h" +#include "commdlg.h" #include "psapi.h" #include "wine/debug.h" @@ -30,6 +32,14 @@ #define MAX_PROGRAM_NAME_LENGTH 80 +WINE_DEFAULT_DEBUG_CHANNEL(crash); + +enum output_targets +{ + TO_EDIT_CONTROL, + TO_STD_ERROR_HANDLE, +}; + int msgbox_res_id(HWND hwnd, UINT textId, UINT captionId, UINT uType) { WCHAR caption[256]; @@ -80,8 +90,12 @@ static WCHAR *get_program_name(HANDLE hProcess) return output; } +static HINSTANCE hInstance; static LPWSTR g_ProgramName; static HFONT g_hBoldFont; +static HWND hEdit; +static HANDLE hFile; +static WCHAR filename[MAX_PATH]; static void set_bold_font(HWND hDlg) { @@ -105,12 +119,127 @@ static void set_message_with_filename(HWND hDlg) SetDlgItemTextW(hDlg, IDC_STATIC_TXT1, newText); } +void save_report_to_tmp(void) +{ + WCHAR path[MAX_PATH]; + + if (!GetTempPathW(MAX_PATH, path)) return; + if (!GetTempFileNameW(path, NULL, 0, filename)) return; + hFile = CreateFileW(filename, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, 0, NULL); + if (hFile == INVALID_HANDLE_VALUE) return; + else dbg_houtput = hFile; +} + +static void output_backtrace(HWND hDlg, enum output_targets target) +{ + LPSTR pTemp; + DWORD size; + DWORD dwNumRead; + int lenW; + HANDLE myfile; + + if (dbg_houtput != hFile) return; + CloseHandle(hFile); + + myfile = CreateFileW(filename, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, + OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + if (myfile == INVALID_HANDLE_VALUE) return; + + size = GetFileSize(myfile, NULL); + if (size == INVALID_FILE_SIZE) + { + CloseHandle(myfile); + return; + } + + /* Extra memory for (WCHAR)'\0'-termination. */ + pTemp = HeapAlloc(GetProcessHeap(), 0, size+2); + if (!pTemp) + { + CloseHandle(myfile); + return; + } + + if (!ReadFile(myfile, pTemp, size, &dwNumRead, NULL)) + { + CloseHandle(myfile); + HeapFree(GetProcessHeap(), 0, pTemp); + return; + } + + CloseHandle(myfile); + + lenW = dwNumRead/sizeof(WCHAR); + + switch(target) + { + case TO_EDIT_CONTROL: + SetWindowTextA(hEdit, pTemp); + break; + case TO_STD_ERROR_HANDLE: + WriteFile(GetStdHandle(STD_ERROR_HANDLE), pTemp, size, NULL, NULL); + DeleteFileW(filename); + break; + } + HeapFree(GetProcessHeap(), 0, pTemp); +} + +static LRESULT WINAPI slave_WndProc(HWND hwnd, UINT msg, WPARAM wParam, + LPARAM lParam) +{ + switch (msg) + { + case WM_CREATE: + { + static const WCHAR editW[] = { 'e','d','i','t',0 }; + DWORD dwStyle = WS_CHILD | WS_VISIBLE | WS_BORDER | WS_VSCROLL | ES_READONLY | + ES_AUTOVSCROLL | ES_MULTILINE | ES_NOHIDESEL | WS_HSCROLL | ES_AUTOHSCROLL; + RECT rc; + GetClientRect(hwnd, &rc); + + hEdit = CreateWindowExW(WS_EX_CLIENTEDGE, editW, NULL, + dwStyle, 0, 0, rc.right, rc.bottom, hwnd, + NULL, NULL, NULL); + break; + } + + case WM_SIZE: + SetWindowPos(hEdit, NULL, 0, 0, LOWORD(lParam), HIWORD(lParam), + SWP_NOOWNERZORDER | SWP_NOZORDER); + break; + + case WM_DESTROY: + hEdit = NULL; + return DefWindowProcW(hwnd, msg, wParam, lParam); + + + default: + return DefWindowProcW(hwnd, msg, wParam, lParam); + } + return 0; +} + static INT_PTR WINAPI DlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { + static const WCHAR className[] = {'B','a','c','k','t','r','a','c','e',0}; + switch (msg) { case WM_INITDIALOG: { + WNDCLASSEXW class; + + hInstance = (HINSTANCE)GetWindowLongPtrW(hwnd, GWLP_HINSTANCE); + + ZeroMemory(&class, sizeof(class)); + class.cbSize = sizeof(class); + class.lpfnWndProc = slave_WndProc; + class.hInstance = hInstance; + class.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1); + class.lpszClassName = className; + + if (!RegisterClassExW(&class)) return FALSE; + set_bold_font(hwnd); set_message_with_filename(hwnd); return TRUE; @@ -127,8 +256,34 @@ static INT_PTR WINAPI DlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) case WM_COMMAND: switch (LOWORD(wParam)) { + case ID_SHOWDETAILS: + { + RECT dlg; + LPWSTR name; + INT len; + + if (hEdit) + { + SetFocus(hEdit); + return TRUE; + } + + len = GetWindowTextLengthW(hwnd) + 1; + name = HeapAlloc(GetProcessHeap(), 0, len * sizeof(WCHAR)); + if (name) + GetWindowTextW(hwnd, name, len); + + GetWindowRect(hwnd, &dlg); + CreateWindowW(className, name, WS_VISIBLE | WS_OVERLAPPEDWINDOW, + dlg.right, dlg.top, dlg.right-dlg.left, dlg.bottom-dlg.top, + hwnd, NULL, hInstance, NULL); + HeapFree(GetProcessHeap(), 0, name); + output_backtrace(hwnd, TO_EDIT_CONTROL); + return TRUE; + } case IDOK: case IDCANCEL: + output_backtrace(hwnd, TO_STD_ERROR_HANDLE); EndDialog(hwnd, LOWORD(wParam)); return TRUE; } diff --git a/programs/winedbg/debugger.h b/programs/winedbg/debugger.h index fc3aada..9c1959b 100644 --- a/programs/winedbg/debugger.h +++ b/programs/winedbg/debugger.h @@ -309,6 +309,7 @@ extern int break_add_condition(int bpnum, struct expr* exp); /* crashdlg.c */ extern void display_crash_dialog(void); +extern void save_report_to_tmp(void); extern int msgbox_res_id(HWND hwnd, UINT textId, UINT captionId, UINT uType); /* dbg.y */ @@ -446,6 +447,7 @@ extern struct dbg_type types_find_type(unsigned long linear, const char* name, /* winedbg.c */ extern void dbg_outputW(const WCHAR* buffer, int len); extern const char* dbg_W2A(const WCHAR* buffer, unsigned len); +extern HANDLE dbg_houtput; #ifdef __GNUC__ extern int dbg_printf(const char* format, ...) __attribute__((format (printf,1,2))); #else diff --git a/programs/winedbg/resource.h b/programs/winedbg/resource.h index c99f0f4..6563a53 100644 --- a/programs/winedbg/resource.h +++ b/programs/winedbg/resource.h @@ -26,8 +26,9 @@ #define IDC_STATIC_BG 100 #define IDC_STATIC_TXT1 101 #define IDC_STATIC_TXT2 102 +#define IDC_CRASHLOG 103 -#define IDM_DEBUG_POPUP 100 +#define ID_SHOWDETAILS 200 #define IDS_AUTO_CAPTION 16 #define IDS_INVALID_PARAMS 17 diff --git a/programs/winedbg/rsrc_Da.rc b/programs/winedbg/rsrc_Da.rc index e69dedc..94dd8e1 100644 --- a/programs/winedbg/rsrc_Da.rc +++ b/programs/winedbg/rsrc_Da.rc @@ -38,5 +38,6 @@ BEGIN Du kan evt. tjekke http://appdb.winehq.org for tips til at køre dette program.\n\n\ Hvis dette problem ikke er til stede under Windows, og ikke har været rapporteret \ endnu, kan du indberette det til http://bugs.winehq.org.",IDC_STATIC_TXT2,27,60,224,100 + PUSHBUTTON "&Show Details", ID_SHOWDETAILS, 140, 151, 60, 16 DEFPUSHBUTTON "Luk", IDOK, 205, 151, 60, 16, WS_TABSTOP END diff --git a/programs/winedbg/rsrc_De.rc b/programs/winedbg/rsrc_De.rc index 45af616..d982c48 100644 --- a/programs/winedbg/rsrc_De.rc +++ b/programs/winedbg/rsrc_De.rc @@ -38,5 +38,6 @@ BEGIN der Anwendung einholen.\n\n\ Tritt dieses Problem unter Windows nicht auf und wurde es noch nicht \ gemeldet, können Sie unter http://bugs.winehq.org einen Eintrag hinterlassen.",IDC_STATIC_TXT2,27,60,224,100 - DEFPUSHBUTTON "Schließen", IDOK, 205, 151, 60, 16, WS_TABSTOP + PUSHBUTTON "&Show Details", ID_SHOWDETAILS, 140, 151, 60, 16 + DEFPUSHBUTTON "S&chließen", IDOK, 205, 151, 60, 16, WS_TABSTOP END diff --git a/programs/winedbg/rsrc_En.rc b/programs/winedbg/rsrc_En.rc index 383e320..cd53010 100644 --- a/programs/winedbg/rsrc_En.rc +++ b/programs/winedbg/rsrc_En.rc @@ -36,5 +36,6 @@ BEGIN this application.\n\n\ If this problem is not present under Windows and has not been reported \ yet, you can report it at http://bugs.winehq.org.",IDC_STATIC_TXT2,27,60,224,100 - DEFPUSHBUTTON "Close", IDOK, 205, 151, 60, 16, WS_TABSTOP + PUSHBUTTON "&Show Details", ID_SHOWDETAILS, 140, 151, 60, 16 + DEFPUSHBUTTON "&Close", IDOK, 205, 151, 60, 16, WS_TABSTOP END diff --git a/programs/winedbg/rsrc_Es.rc b/programs/winedbg/rsrc_Es.rc index 465d1de..fa3d5be 100644 --- a/programs/winedbg/rsrc_Es.rc +++ b/programs/winedbg/rsrc_Es.rc @@ -39,5 +39,6 @@ BEGIN esta aplicación.\n\n\ Si este problema no esta presente en Windows y no ha sido reportado \ todavía, lo puedes reportar en http://bugs.winehq.org.",IDC_STATIC_TXT2,27,60,224,100 + PUSHBUTTON "&Show Details", ID_SHOWDETAILS, 140, 151, 60, 16 DEFPUSHBUTTON "Cerrar", IDOK, 205, 151, 60, 16, WS_TABSTOP END diff --git a/programs/winedbg/rsrc_Fr.rc b/programs/winedbg/rsrc_Fr.rc index 9132611..15ffc50 100644 --- a/programs/winedbg/rsrc_Fr.rc +++ b/programs/winedbg/rsrc_Fr.rc @@ -39,5 +39,6 @@ BEGIN l'exécution de cette application.\n\n\ Si ce problème ne se produit pas sous Windows et n'a pas déjà été rapporté, \ vous pouvez le rapporter sur http://bugs.winehq.org.",IDC_STATIC_TXT2,27,60,224,100 + PUSHBUTTON "&Show Details", ID_SHOWDETAILS, 140, 151, 60, 16 DEFPUSHBUTTON "Fermer", IDOK, 205, 151, 60, 16, WS_TABSTOP END diff --git a/programs/winedbg/rsrc_He.rc b/programs/winedbg/rsrc_He.rc index 0e7f857..9612c52 100644 --- a/programs/winedbg/rsrc_He.rc +++ b/programs/winedbg/rsrc_He.rc @@ -40,5 +40,6 @@ BEGIN יישום זה.\n\n\ אם תקלה זו אינה קיימת בעת הרצת Windows ולא דווח עליה עדיין, \ ניתן לדווח עליה בכתובת http://bugs.winehq.org.",IDC_STATIC_TXT2,27,60,224,100 + PUSHBUTTON "&Show Details", ID_SHOWDETAILS, 140, 151, 60, 16 DEFPUSHBUTTON "סגירה", IDOK, 205, 151, 60, 16, WS_TABSTOP END diff --git a/programs/winedbg/rsrc_It.rc b/programs/winedbg/rsrc_It.rc index 82d360e..17d59f5 100644 --- a/programs/winedbg/rsrc_It.rc +++ b/programs/winedbg/rsrc_It.rc @@ -39,5 +39,6 @@ BEGIN questa applicazione.\n\n\ Se questo problema non è presente sotto Windows e non è stato ancora segnalato, \ puoi segnalarlo su http://bugs.winehq.org.",IDC_STATIC_TXT2,27,60,224,100 + PUSHBUTTON "&Show Details", ID_SHOWDETAILS, 140, 151, 60, 16 DEFPUSHBUTTON "Chiudi", IDOK, 205, 151, 60, 16, WS_TABSTOP END diff --git a/programs/winedbg/rsrc_Ja.rc b/programs/winedbg/rsrc_Ja.rc index 80b5454..35c84b7 100644 --- a/programs/winedbg/rsrc_Ja.rc +++ b/programs/winedbg/rsrc_Ja.rc @@ -40,5 +40,6 @@ BEGIN この問題が Windows 上で発生することがなく、まだ報告されていない場合は \ http://bugs.winehq.org でこの問題を報告できます。", IDC_STATIC_TXT2,27,60,224,100 + PUSHBUTTON "&Show Details", ID_SHOWDETAILS, 140, 151, 60, 16 DEFPUSHBUTTON "閉じる", IDOK, 205, 151, 60, 16, WS_TABSTOP END diff --git a/programs/winedbg/rsrc_Ko.rc b/programs/winedbg/rsrc_Ko.rc index b9a4f60..a817545 100644 --- a/programs/winedbg/rsrc_Ko.rc +++ b/programs/winedbg/rsrc_Ko.rc @@ -39,5 +39,6 @@ BEGIN .\n\n\ 만약 이 문제가 윈도우에서는 존재하지 않고, 아직 버그로 보고되지 않았으면 \ , 당신은 http://bugs.winehq.org에 버그로 보고할 수 있습니다.",IDC_STATIC_TXT2,27,60,224,100 + PUSHBUTTON "&Show Details", ID_SHOWDETAILS, 140, 151, 60, 16 DEFPUSHBUTTON "닫기", IDOK, 205, 151, 60, 16, WS_TABSTOP END diff --git a/programs/winedbg/rsrc_Lt.rc b/programs/winedbg/rsrc_Lt.rc index d088697..a8bf2a1 100644 --- a/programs/winedbg/rsrc_Lt.rc +++ b/programs/winedbg/rsrc_Lt.rc @@ -39,5 +39,6 @@ BEGIN programos vykdymą.\n\n\ Jei šios problemos nėra Windows sistemoje ir apie ją dar nebuvo pranešta, \ galite pranešti http://bugs.winehq.org.",IDC_STATIC_TXT2,27,60,224,100 + PUSHBUTTON "&Show Details", ID_SHOWDETAILS, 140, 151, 60, 16 DEFPUSHBUTTON "Užverti", IDOK, 205, 151, 60, 16, WS_TABSTOP END diff --git a/programs/winedbg/rsrc_Nl.rc b/programs/winedbg/rsrc_Nl.rc index b3e6baf..73c67e4 100644 --- a/programs/winedbg/rsrc_Nl.rc +++ b/programs/winedbg/rsrc_Nl.rc @@ -36,5 +36,6 @@ BEGIN van dit programma.\n\n\ Als dit probleem niet optreedt onder Windows en nog niet is gerapporteerd, \ dan kunt u het rapporteren op http://bugs.winehq.org.",IDC_STATIC_TXT2,27,60,224,100 + PUSHBUTTON "&Show Details", ID_SHOWDETAILS, 140, 151, 60, 16 DEFPUSHBUTTON "Sluiten", IDOK, 205, 151, 60, 16, WS_TABSTOP END diff --git a/programs/winedbg/rsrc_No.rc b/programs/winedbg/rsrc_No.rc index 5cee7aa..46f8e32 100644 --- a/programs/winedbg/rsrc_No.rc +++ b/programs/winedbg/rsrc_No.rc @@ -39,5 +39,6 @@ BEGIN dette programmet.\n\n\ Du kan rapportere feilen på http://bugs.winehq.org hvis problemet \ ikke oppstår i Windows.",IDC_STATIC_TXT2,27,60,224,100 + PUSHBUTTON "&Show Details", ID_SHOWDETAILS, 140, 151, 60, 16 DEFPUSHBUTTON "Lukk", IDOK, 205, 151, 60, 16, WS_TABSTOP END diff --git a/programs/winedbg/rsrc_Pl.rc b/programs/winedbg/rsrc_Pl.rc index a70fd62..8d3ffba 100644 --- a/programs/winedbg/rsrc_Pl.rc +++ b/programs/winedbg/rsrc_Pl.rc @@ -36,5 +36,6 @@ BEGIN tej aplikacji.\n\n\ Jeeli problem ten nie wystpuje pod Windowsem i nie zosta jeszcze zgoszony \ to moesz poinformowa o tym pod adresem http://bugs.winehq.org.",IDC_STATIC_TXT2,27,60,224,100 + PUSHBUTTON "&Show Details", ID_SHOWDETAILS, 140, 151, 60, 16 DEFPUSHBUTTON "Zamknij", IDOK, 205, 151, 60, 16, WS_TABSTOP END diff --git a/programs/winedbg/rsrc_Pt.rc b/programs/winedbg/rsrc_Pt.rc index 19b11b7..9625b4d 100644 --- a/programs/winedbg/rsrc_Pt.rc +++ b/programs/winedbg/rsrc_Pt.rc @@ -39,6 +39,7 @@ BEGIN esta aplicativo.\n\n\ Se este problema não existe no Windows e não foi relatado ainda \ você pode fazê-lo em http://bugs.winehq.org.",IDC_STATIC_TXT2,27,60,224,100 + PUSHBUTTON "&Show Details", ID_SHOWDETAILS, 140, 151, 60, 16 DEFPUSHBUTTON "Fechar", IDOK, 205, 151, 60, 16, WS_TABSTOP END @@ -58,5 +59,6 @@ BEGIN esta aplicação.\n\n\ Se este problema não existe no Windows e não foi reportado ainda \ você pode fazê-lo em http://bugs.winehq.org.",IDC_STATIC_TXT2,27,60,224,100 + PUSHBUTTON "&Show Details", ID_SHOWDETAILS, 140, 151, 60, 16 DEFPUSHBUTTON "Fechar", IDOK, 205, 151, 60, 16, WS_TABSTOP END diff --git a/programs/winedbg/rsrc_Ro.rc b/programs/winedbg/rsrc_Ro.rc index 5377147..b962002 100644 --- a/programs/winedbg/rsrc_Ro.rc +++ b/programs/winedbg/rsrc_Ro.rc @@ -39,5 +39,6 @@ BEGIN Dacă această problemă nu este prezentă în Windows și nu a \ fost raportată încă, o puteți raporta la \ http://bugs.winehq.org.",IDC_STATIC_TXT2,27,60,224,100 + PUSHBUTTON "&Show Details", ID_SHOWDETAILS, 140, 151, 60, 16 DEFPUSHBUTTON "Închide", IDOK, 205, 151, 60, 16, WS_TABSTOP END diff --git a/programs/winedbg/rsrc_Ru.rc b/programs/winedbg/rsrc_Ru.rc index bddc8d4..81ed2dc 100644 --- a/programs/winedbg/rsrc_Ru.rc +++ b/programs/winedbg/rsrc_Ru.rc @@ -39,5 +39,6 @@ BEGIN этой программы.\n\n\ Если эта проблема не присутствует под Windows и ещё не была зарегистрирована, \ вы можете сообщить о ней на http://bugs.winehq.org.",IDC_STATIC_TXT2,27,60,224,100 + PUSHBUTTON "&Show Details", ID_SHOWDETAILS, 140, 151, 60, 16 DEFPUSHBUTTON "Закрыть", IDOK, 205, 151, 60, 16, WS_TABSTOP END diff --git a/programs/winedbg/rsrc_Si.rc b/programs/winedbg/rsrc_Si.rc index 58112bb..e98b8d0 100644 --- a/programs/winedbg/rsrc_Si.rc +++ b/programs/winedbg/rsrc_Si.rc @@ -38,5 +38,6 @@ BEGIN te aplikacije.\n\n\ Če ta težava ni prisotna na Windows sistemu in še ni bila prijavljena \ na http://bugs.winehq.org, prosim napišite prijavo.",IDC_STATIC_TXT2,27,60,224,100 + PUSHBUTTON "&Show Details", ID_SHOWDETAILS, 140, 151, 60, 16 DEFPUSHBUTTON "Zapri", IDOK, 205, 151, 60, 16, WS_TABSTOP END diff --git a/programs/winedbg/rsrc_Sr.rc b/programs/winedbg/rsrc_Sr.rc index ec809ff..273425b 100644 --- a/programs/winedbg/rsrc_Sr.rc +++ b/programs/winedbg/rsrc_Sr.rc @@ -40,6 +40,7 @@ BEGIN овог програма.\n\n\ Ако овај проблем није присутан под Windows-ом и још увек није \ пријављен, пријавите га на http://bugs.winehq.org.",IDC_STATIC_TXT2,27,60,224,100 + PUSHBUTTON "&Show Details", ID_SHOWDETAILS, 140, 151, 60, 16 DEFPUSHBUTTON "Затвори", IDOK, 205, 151, 60, 16, WS_TABSTOP END @@ -59,5 +60,6 @@ BEGIN ovog programa.\n\n\ Ako ovaj problem nije prisutan pod Windows-om i još uvek nije \ prijavljen, prijavite ga na http://bugs.winehq.org.",IDC_STATIC_TXT2,27,60,224,100 + PUSHBUTTON "&Show Details", ID_SHOWDETAILS, 140, 151, 60, 16 DEFPUSHBUTTON "Zatvori", IDOK, 205, 151, 60, 16, WS_TABSTOP END diff --git a/programs/winedbg/rsrc_Sv.rc b/programs/winedbg/rsrc_Sv.rc index 10a5f8f..3b8fcc2 100644 --- a/programs/winedbg/rsrc_Sv.rc +++ b/programs/winedbg/rsrc_Sv.rc @@ -39,5 +39,6 @@ BEGIN detta program.\n\n\ Om problemet inte uppstår i Windows och ännu inte har rapporterats \ så kan du rapportera det på http://bugs.winehq.org.",IDC_STATIC_TXT2,27,60,224,100 + PUSHBUTTON "&Show Details", ID_SHOWDETAILS, 140, 151, 60, 16 DEFPUSHBUTTON "Stäng", IDOK, 205, 151, 60, 16, WS_TABSTOP END diff --git a/programs/winedbg/rsrc_Uk.rc b/programs/winedbg/rsrc_Uk.rc index d2e053e..522f6c0 100644 --- a/programs/winedbg/rsrc_Uk.rc +++ b/programs/winedbg/rsrc_Uk.rc @@ -40,5 +40,6 @@ BEGIN запуску цієї програми.\n\n\ Якщо ця проблема не присутня під Windows і ще не була зареєстрована, \ ви можете повідомити про неї на http://bugs.winehq.org.",IDC_STATIC_TXT2,27,60,224,100 + PUSHBUTTON "&Show Details", ID_SHOWDETAILS, 140, 151, 60, 16 DEFPUSHBUTTON "Закрити", IDOK, 205, 151, 60, 16, WS_TABSTOP END diff --git a/programs/winedbg/tgt_active.c b/programs/winedbg/tgt_active.c index 099b353..4061378 100644 --- a/programs/winedbg/tgt_active.c +++ b/programs/winedbg/tgt_active.c @@ -766,7 +766,8 @@ enum dbg_start dbg_active_auto(int argc, char* argv[]) msgbox_res_id(NULL, IDS_INVALID_PARAMS, IDS_AUTO_CAPTION, MB_OK); return ds; } - display_crash_dialog(); + + save_report_to_tmp(); hFile = parser_generate_command_file("echo Modules:", "info share", "echo Threads:", "info threads", diff --git a/programs/winedbg/winedbg.c b/programs/winedbg/winedbg.c index a3a9f16..7f8a407 100644 --- a/programs/winedbg/winedbg.c +++ b/programs/winedbg/winedbg.c @@ -88,12 +88,12 @@ struct dbg_thread* dbg_curr_thread = NULL; DWORD_PTR dbg_curr_tid = 0; DWORD_PTR dbg_curr_pid = 0; CONTEXT dbg_context; +HANDLE dbg_houtput; BOOL dbg_interactiveP = FALSE; static struct list dbg_process_list = LIST_INIT(dbg_process_list); struct dbg_internal_var dbg_internal_vars[DBG_IV_LAST]; -static HANDLE dbg_houtput; static void dbg_outputA(const char* buffer, int len) { @@ -675,7 +675,9 @@ int main(int argc, char** argv) dbg_houtput = GetStdHandle(STD_ERROR_HANDLE); switch (dbg_active_auto(argc, argv)) { - case start_ok: return 0; + case start_ok: + display_crash_dialog(); + return 0; case start_error_parse: return dbg_winedbg_usage(FALSE); case start_error_init: return -1; }