KiCad PCB EDA Suite
Loading...
Searching...
No Matches
wx_assert.cpp
Go to the documentation of this file.
1
/*
2
* This program source code file is part of KiCad, a free EDA CAD application.
3
*
4
* Copyright The KiCad Developers, see AUTHORS.TXT for contributors.
5
*
6
* This program is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU General Public License
8
* as published by the Free Software Foundation; either version 2
9
* of the License, or (at your option) any later version.
10
*
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
15
*
16
* You should have received a copy of the GNU General Public License
17
* along with this program. If not, see <https://www.gnu.org/licenses/>.
18
*/
19
20
#include <
qa_utils/wx_utils/wx_assert.h
>
21
22
#include <cstdlib>
23
#include <iostream>
24
#include <sstream>
25
26
#if defined( __APPLE__ ) || defined( __FreeBSD__ )
27
#define BOOST_STACKTRACE_GNU_SOURCE_NOT_REQUIRED
28
#endif
29
#ifdef __linux__
30
#define BOOST_STACKTRACE_USE_ADDR2LINE
31
#endif
32
#include <boost/stacktrace.hpp>
33
34
namespace
KI_TEST
35
{
36
WX_ASSERT_ERROR::WX_ASSERT_ERROR
(
const
wxString& aFile,
int
aLine,
const
wxString& aFunc,
37
const
wxString& aCond,
const
wxString& aMsg )
38
:
m_file
( aFile ),
m_line
( aLine ),
m_func
( aFunc ),
m_cond
( aCond ),
m_msg
( aMsg )
39
{
40
std::ostringstream ss;
41
42
ss <<
"WX assertion in "
<<
m_file
<<
":"
<<
m_line
<<
"\n"
43
<<
"in function "
<<
m_func
<<
"\n"
44
<<
"failed condition: "
<<
m_cond
;
45
46
if
(
m_msg
.size() )
47
ss <<
"\n"
48
<<
"with message: "
<<
m_msg
;
49
50
m_format_msg
= ss.str();
51
}
52
53
const
char
*
WX_ASSERT_ERROR::what
() const noexcept
54
{
55
return
m_format_msg
.c_str();
56
}
57
58
59
void
ReportAssertOffMainThread
(
const
wxString& aFile,
int
aLine,
const
wxString& aFunc,
60
const
wxString& aCond,
const
wxString& aMsg )
61
{
62
WX_ASSERT_ERROR
error( aFile, aLine, aFunc, aCond, aMsg );
63
64
std::cerr << std::endl
65
<<
"Assertion on a worker thread: "
<< error.
what
() << std::endl
66
<< std::endl
67
<<
"Stack trace:"
<< std::endl
68
<< boost::stacktrace::stacktrace() << std::endl;
69
std::cerr.flush();
70
71
// _Exit rather than abort so that Boost.Test's SIGABRT handler cannot long jump out of
72
// this thread and into the main thread's test-runner context
73
std::_Exit( EXIT_FAILURE );
74
}
75
76
}
// namespace KI_TEST
KI_TEST::WX_ASSERT_ERROR
An exception class to represent a WX assertion.
Definition
wx_assert.h:44
KI_TEST::WX_ASSERT_ERROR::WX_ASSERT_ERROR
WX_ASSERT_ERROR(const wxString &aFile, int aLine, const wxString &aFunc, const wxString &aCond, const wxString &aMsg)
Definition
wx_assert.cpp:36
KI_TEST::WX_ASSERT_ERROR::m_cond
std::string m_cond
Definition
wx_assert.h:56
KI_TEST::WX_ASSERT_ERROR::what
const char * what() const noexcept override
Definition
wx_assert.cpp:53
KI_TEST::WX_ASSERT_ERROR::m_func
std::string m_func
Definition
wx_assert.h:55
KI_TEST::WX_ASSERT_ERROR::m_line
int m_line
Definition
wx_assert.h:54
KI_TEST::WX_ASSERT_ERROR::m_file
std::string m_file
Definition
wx_assert.h:53
KI_TEST::WX_ASSERT_ERROR::m_format_msg
std::string m_format_msg
Definition
wx_assert.h:59
KI_TEST::WX_ASSERT_ERROR::m_msg
std::string m_msg
Definition
wx_assert.h:57
KI_TEST
Definition
board_construction_utils.cpp:29
KI_TEST::ReportAssertOffMainThread
void ReportAssertOffMainThread(const wxString &aFile, int aLine, const wxString &aFunc, const wxString &aCond, const wxString &aMsg)
Print a wx assertion that fired outside the main thread, then exit the process.
Definition
wx_assert.cpp:59
wx_assert.h
src
qa
qa_utils
wx_utils
wx_assert.cpp
Generated on Thu Sep 17 2026 00:06:23 for KiCad PCB EDA Suite by
1.13.2