mirror of
https://github.com/aseprite/aseprite.git
synced 2025-02-28 16:11:35 +00:00
Add base_assert/trace functions
This commit is contained in:
parent
6a10b77baf
commit
ff49b50047
@ -20,6 +20,7 @@ set(BASE_SOURCES
|
||||
chrono.cpp
|
||||
connection.cpp
|
||||
convert_to.cpp
|
||||
debug.cpp
|
||||
errno_string.cpp
|
||||
exception.cpp
|
||||
file_handle.cpp
|
||||
|
75
src/base/debug.cpp
Normal file
75
src/base/debug.cpp
Normal file
@ -0,0 +1,75 @@
|
||||
// Aseprite Base Library
|
||||
// Copyright (c) 2001-2014 David Capello
|
||||
//
|
||||
// This file is released under the terms of the MIT license.
|
||||
// Read LICENSE.txt for more information.
|
||||
|
||||
#ifdef HAVE_CONFIG_H
|
||||
#include "config.h"
|
||||
#endif
|
||||
|
||||
#ifdef _DEBUG
|
||||
|
||||
#include "base/debug.h"
|
||||
|
||||
#include "base/convert_to.h"
|
||||
#include "base/string.h"
|
||||
|
||||
#include <cstdlib>
|
||||
#include <iostream>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#ifdef WIN32
|
||||
#include <windows.h>
|
||||
#endif
|
||||
|
||||
int base_assert(const char* condition, const char* file, int lineNum)
|
||||
{
|
||||
#ifdef WIN32
|
||||
|
||||
std::vector<wchar_t> buf(MAX_PATH);
|
||||
GetModuleFileNameW(NULL, &buf[0], MAX_PATH);
|
||||
|
||||
int ret = _CrtDbgReportW(_CRT_ASSERT,
|
||||
base::from_utf8(file).c_str(),
|
||||
lineNum,
|
||||
&buf[0],
|
||||
base::from_utf8(condition).c_str());
|
||||
|
||||
return (ret == 1 ? 1: 0);
|
||||
|
||||
#else
|
||||
|
||||
std::string text = "Assertion failed: ";
|
||||
text += condition;
|
||||
text += ", file ";
|
||||
text += file;
|
||||
text += ", line ";
|
||||
text += base::convert_to<std::string>(lineNum);
|
||||
std::cerr << text << std::endl;
|
||||
return 1;
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
void base_trace(const char* msg, ...)
|
||||
{
|
||||
va_list ap;
|
||||
va_start(ap, msg);
|
||||
char buf[4096];
|
||||
vsprintf(buf, msg, ap);
|
||||
va_end(ap);
|
||||
|
||||
#ifdef WIN32
|
||||
|
||||
_CrtDbgReport(_CRT_WARN, NULL, 0, NULL, buf);
|
||||
|
||||
#else
|
||||
|
||||
std::cerr << buf << std::endl;
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
#endif
|
37
src/base/debug.h
Normal file
37
src/base/debug.h
Normal file
@ -0,0 +1,37 @@
|
||||
// Aseprite Base Library
|
||||
// Copyright (c) 2001-2014 David Capello
|
||||
//
|
||||
// This file is released under the terms of the MIT license.
|
||||
// Read LICENSE.txt for more information.
|
||||
|
||||
#ifndef BASE_DEBUG_H_INCLUDED
|
||||
#define BASE_DEBUG_H_INCLUDED
|
||||
#pragma once
|
||||
|
||||
int base_assert(const char* condition, const char* file, int lineNum);
|
||||
void base_trace(const char* msg, ...);
|
||||
|
||||
#ifdef _DEBUG
|
||||
#ifdef WIN32
|
||||
#include <crtdbg.h>
|
||||
#define base_break() _CrtDbgBreak()
|
||||
#else
|
||||
#include <signal.h>
|
||||
#define base_break() raise(SIGTRAP)
|
||||
#endif
|
||||
|
||||
#define ASSERT(condition) { \
|
||||
if (!(condition)) { \
|
||||
if (base_assert(#condition, __FILE__, __LINE__)) { \
|
||||
base_break(); \
|
||||
} \
|
||||
} \
|
||||
}
|
||||
|
||||
#define TRACE base_trace
|
||||
#else
|
||||
#define ASSERT(condition)
|
||||
#define TRACE(...)
|
||||
#endif
|
||||
|
||||
#endif
|
@ -54,7 +54,11 @@ void verbose_printf(const char* format, ...);
|
||||
#define PI 3.14159265358979323846
|
||||
|
||||
#include <allegro/base.h>
|
||||
#include <allegro/debug.h> // ASSERT
|
||||
#include <allegro/debug.h>
|
||||
#undef ASSERT
|
||||
#undef TRACE
|
||||
|
||||
#include "base/debug.h"
|
||||
|
||||
//////////////////////////////////////////////////////////////////////
|
||||
// Overloaded new/delete operators to detect memory-leaks
|
||||
|
Loading…
x
Reference in New Issue
Block a user