mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-02-06 18:40:36 +00:00
Log: add ability to force log all errors
This commit is contained in:
parent
e52386ccfb
commit
9acc606e4d
@ -52,6 +52,8 @@ LOG_CHANNEL(sys_log, "SYS");
|
|||||||
// Preallocate 32 MiB
|
// Preallocate 32 MiB
|
||||||
stx::manual_typemap<void, 0x20'00000, 128> g_fixed_typemap;
|
stx::manual_typemap<void, 0x20'00000, 128> g_fixed_typemap;
|
||||||
|
|
||||||
|
bool g_log_all_errors = false;
|
||||||
|
|
||||||
bool g_use_rtm = false;
|
bool g_use_rtm = false;
|
||||||
u64 g_rtm_tx_limit1 = 0;
|
u64 g_rtm_tx_limit1 = 0;
|
||||||
u64 g_rtm_tx_limit2 = 0;
|
u64 g_rtm_tx_limit2 = 0;
|
||||||
@ -1976,6 +1978,13 @@ s32 error_code::error_report(s32 result, const char* fmt, const fmt_type_info* s
|
|||||||
if (!fmt)
|
if (!fmt)
|
||||||
{
|
{
|
||||||
// Report and clean error state
|
// Report and clean error state
|
||||||
|
|
||||||
|
if (g_log_all_errors) [[unlikely]]
|
||||||
|
{
|
||||||
|
g_tls_error_stats.clear();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
for (auto&& pair : g_tls_error_stats)
|
for (auto&& pair : g_tls_error_stats)
|
||||||
{
|
{
|
||||||
if (pair.second > 3)
|
if (pair.second > 3)
|
||||||
@ -2013,11 +2022,19 @@ s32 error_code::error_report(s32 result, const char* fmt, const fmt_type_info* s
|
|||||||
fmt::raw_append(g_tls_error_str, fmt, sup, args);
|
fmt::raw_append(g_tls_error_str, fmt, sup, args);
|
||||||
|
|
||||||
// Update stats and check log threshold
|
// Update stats and check log threshold
|
||||||
const auto stat = ++g_tls_error_stats[g_tls_error_str];
|
|
||||||
|
|
||||||
if (stat <= 3)
|
if (g_log_all_errors) [[unlikely]]
|
||||||
{
|
{
|
||||||
channel->error("%s [%u]", g_tls_error_str, stat);
|
channel->error("%s", g_tls_error_str);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
const auto stat = ++g_tls_error_stats[g_tls_error_str];
|
||||||
|
|
||||||
|
if (stat <= 3)
|
||||||
|
{
|
||||||
|
channel->error("%s [%u]", g_tls_error_str, stat);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
@ -294,6 +294,8 @@ public:
|
|||||||
|
|
||||||
extern Emulator Emu;
|
extern Emulator Emu;
|
||||||
|
|
||||||
|
extern bool g_log_all_errors;
|
||||||
|
|
||||||
extern bool g_use_rtm;
|
extern bool g_use_rtm;
|
||||||
extern u64 g_rtm_tx_limit1;
|
extern u64 g_rtm_tx_limit1;
|
||||||
extern u64 g_rtm_tx_limit2;
|
extern u64 g_rtm_tx_limit2;
|
||||||
|
@ -187,6 +187,7 @@ namespace gui
|
|||||||
const gui_save l_tty = gui_save(logger, "TTY", true);
|
const gui_save l_tty = gui_save(logger, "TTY", true);
|
||||||
const gui_save l_level = gui_save(logger, "level", static_cast<uchar>(logs::level::success));
|
const gui_save l_level = gui_save(logger, "level", static_cast<uchar>(logs::level::success));
|
||||||
const gui_save l_prefix = gui_save(logger, "prefix_on", false);
|
const gui_save l_prefix = gui_save(logger, "prefix_on", false);
|
||||||
|
const gui_save l_stack_err = gui_save(logger, "ERR_stack", true);
|
||||||
const gui_save l_stack = gui_save(logger, "stack", true);
|
const gui_save l_stack = gui_save(logger, "stack", true);
|
||||||
const gui_save l_stack_tty = gui_save(logger, "TTY_stack", false);
|
const gui_save l_stack_tty = gui_save(logger, "TTY_stack", false);
|
||||||
const gui_save l_limit = gui_save(logger, "limit", 1000);
|
const gui_save l_limit = gui_save(logger, "limit", 1000);
|
||||||
|
@ -21,6 +21,7 @@ extern fs::file g_tty;
|
|||||||
extern atomic_t<s64> g_tty_size;
|
extern atomic_t<s64> g_tty_size;
|
||||||
extern std::array<std::deque<std::string>, 16> g_tty_input;
|
extern std::array<std::deque<std::string>, 16> g_tty_input;
|
||||||
extern std::mutex g_tty_mutex;
|
extern std::mutex g_tty_mutex;
|
||||||
|
extern bool g_log_all_errors;
|
||||||
|
|
||||||
constexpr auto qstr = QString::fromStdString;
|
constexpr auto qstr = QString::fromStdString;
|
||||||
|
|
||||||
@ -292,6 +293,14 @@ void log_frame::CreateAndConnectActions()
|
|||||||
m_stack_log = checked;
|
m_stack_log = checked;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
m_stack_act_err = new QAction(tr("Stack Cell Errors"), this);
|
||||||
|
m_stack_act_err->setCheckable(true);
|
||||||
|
connect(m_stack_act_err, &QAction::toggled, [this](bool checked)
|
||||||
|
{
|
||||||
|
m_gui_settings->SetValue(gui::l_stack_err, checked);
|
||||||
|
g_log_all_errors = !checked;
|
||||||
|
});
|
||||||
|
|
||||||
m_show_prefix_act = new QAction(tr("Show Thread Prefix"), this);
|
m_show_prefix_act = new QAction(tr("Show Thread Prefix"), this);
|
||||||
m_show_prefix_act->setCheckable(true);
|
m_show_prefix_act->setCheckable(true);
|
||||||
connect(m_show_prefix_act, &QAction::toggled, [this](bool checked)
|
connect(m_show_prefix_act, &QAction::toggled, [this](bool checked)
|
||||||
@ -324,6 +333,7 @@ void log_frame::CreateAndConnectActions()
|
|||||||
menu->addActions(m_log_level_acts->actions());
|
menu->addActions(m_log_level_acts->actions());
|
||||||
menu->addSeparator();
|
menu->addSeparator();
|
||||||
menu->addAction(m_stack_act_log);
|
menu->addAction(m_stack_act_log);
|
||||||
|
menu->addAction(m_stack_act_err);
|
||||||
menu->addAction(m_show_prefix_act);
|
menu->addAction(m_show_prefix_act);
|
||||||
menu->exec(m_log->viewport()->mapToGlobal(pos));
|
menu->exec(m_log->viewport()->mapToGlobal(pos));
|
||||||
});
|
});
|
||||||
@ -397,6 +407,7 @@ void log_frame::LoadSettings()
|
|||||||
m_stack_tty = m_gui_settings->GetValue(gui::l_stack_tty).toBool();
|
m_stack_tty = m_gui_settings->GetValue(gui::l_stack_tty).toBool();
|
||||||
m_stack_act_log->setChecked(m_stack_log);
|
m_stack_act_log->setChecked(m_stack_log);
|
||||||
m_stack_act_tty->setChecked(m_stack_tty);
|
m_stack_act_tty->setChecked(m_stack_tty);
|
||||||
|
m_stack_act_err->setChecked(!g_log_all_errors);
|
||||||
|
|
||||||
s_gui_listener.show_prefix = m_gui_settings->GetValue(gui::l_prefix).toBool();
|
s_gui_listener.show_prefix = m_gui_settings->GetValue(gui::l_prefix).toBool();
|
||||||
m_show_prefix_act->setChecked(s_gui_listener.show_prefix);
|
m_show_prefix_act->setChecked(s_gui_listener.show_prefix);
|
||||||
|
@ -77,6 +77,7 @@ private:
|
|||||||
|
|
||||||
QAction* m_stack_act_log = nullptr;
|
QAction* m_stack_act_log = nullptr;
|
||||||
QAction* m_stack_act_tty = nullptr;
|
QAction* m_stack_act_tty = nullptr;
|
||||||
|
QAction* m_stack_act_err = nullptr;
|
||||||
|
|
||||||
QAction* m_show_prefix_act = nullptr;
|
QAction* m_show_prefix_act = nullptr;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user