Skip to content

Commit

Permalink
Merge 0c139e9 into d3a1a8e
Browse files Browse the repository at this point in the history
  • Loading branch information
berryzplus authored Aug 9, 2020
2 parents d3a1a8e + 0c139e9 commit 538ea1b
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 40 deletions.
11 changes: 11 additions & 0 deletions sakura_core/debug/Debug1.h
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@

#pragma once

#include <stdarg.h>

#include <Windows.h>

// -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- //
// メッセージ出力:実装 //
// -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- //
Expand Down Expand Up @@ -47,3 +51,10 @@ void DebugOutW( LPCWSTR lpFmt, ...);
#else
#define RELPRINT Do_not_define_USE_RELPRINT
#endif // USE_RELPRINT

//トレース出力(トレース箇所のファイルパスと行番号を出力してエラー解析を容易にする目的)
#ifdef _DEBUG
#define TRACE( format, ... ) DEBUG_TRACE( _T("%hs(%d): ") _T(format) _T("\n"), __FILE__, __LINE__, __VA_ARGS__ )
#else
#define TRACE( ... )
#endif
33 changes: 2 additions & 31 deletions sakura_core/debug/Debug2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,41 +2,12 @@
#include "StdAfx.h"
#include "debug/Debug2.h"

//2007.08.30 kobake 追加

#ifdef _DEBUG
//!デバッグメッセージ出力
void debug_output(const char* str, ...)
{
char buf[_MAX_PATH+150];
va_list mark;
va_start(mark,str);
// FILE名, LINE 式 分必要
tchar_vsnprintf_s(buf,_countof(buf),str,mark);
va_end(mark);

//デバッガに出力
OutputDebugStringA(buf);
}

//!強制終了
void debug_exit()
{
MessageBox(NULL,L"assertとかに引っ掛かったぽいです",GSTR_APPNAME,MB_OK);
exit(1);
}

void debug_exit2(const char* file, int line, const char* exp)
{
char szBuffer[1024];
wsprintfA(szBuffer, "assert\n%s(%d):\n%s", file, line, exp);
MessageBoxA(NULL, szBuffer , "sakura", MB_OK);
exit(1);
::exit( 1 );
}

void warning_point()
{
int n;
n=0; //※←ここにブレークポイントを設けておくと、任意ワーニングでブレークできる
::DebugBreak();
}
#endif // _DEBUG
21 changes: 12 additions & 9 deletions sakura_core/debug/Debug2.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,29 +27,32 @@
*/
#pragma once

//2007.08.30 kobake 追加
#ifdef assert
#undef assert
#endif
#include <cassert>

#include "debug/Debug1.h"
#include "util/MessageBoxF.h"

#ifdef _DEBUG
void debug_output(const char* str, ...);

// C Runtime の定義をundefして独自定義に差し替える
#undef assert

void debug_exit();
void debug_exit2(const char* file, int line, const char* exp);
void warning_point();

#define assert(exp) \
{ \
if(!(exp)){ \
debug_output("!assert: %hs(%d): %hs\n", __FILE__, __LINE__, #exp); \
debug_exit2(__FILE__, __LINE__, #exp); \
TRACE( "!assert: " #exp ); \
ErrorMessage( NULL, L"!assert\n%hs(%d):\n%hs", __FILE__, __LINE__, #exp ); \
debug_exit(); \
} \
}

#define assert_warning(exp) \
{ \
if(!(exp)){ \
debug_output("!warning: %hs(%d): %hs\n", __FILE__, __LINE__, #exp); \
TRACE( "!warning: " #exp ); \
warning_point(); \
} \
}
Expand Down
14 changes: 14 additions & 0 deletions sakura_core/util/MessageBoxF.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,20 @@ int Wrap_MessageBox(HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType)
// 選択中の言語IDを取得する
LANGID wLangId = CSelectLang::getDefaultLangId();

// 標準エラー出力を取得する
HANDLE hStdErr = ::GetStdHandle( STD_ERROR_HANDLE );
if( hStdErr ){
// lpTextの文字列長を求める
DWORD dwTextLen = lpText ? ::wcslen( lpText ) : 0;

// lpText を標準エラー出力に書き出す
DWORD dwWritten = 0;
::WriteConsoleW( hStdErr, lpText, dwTextLen, &dwWritten, NULL );

// いい加減な戻り値を返す。(返り値0は未定義なので本来返らない値を返している)
return 0;
}

// lpText, lpCaption をローカルバッファにコピーして MessageBox API を呼び出す
// ※ 使い回しのバッファが使用されていてそれが裏で書き換えられた場合でも
// メッセージボックス上の Ctrl+C が文字化けしないように
Expand Down

0 comments on commit 538ea1b

Please sign in to comment.