2020-12-26 14:12:05 -08:00
|
|
|
// Copyright (c) FIRST and other WPILib contributors.
|
|
|
|
|
// Open Source Software; you can modify and/or share it under the terms of
|
|
|
|
|
// the WPILib BSD license file in the root directory of this project.
|
2019-08-12 23:45:45 -07:00
|
|
|
|
|
|
|
|
#include "wpi/StackTrace.h"
|
|
|
|
|
|
|
|
|
|
#include "StackWalker.h"
|
|
|
|
|
#include "wpi/ConvertUTF.h"
|
|
|
|
|
#include "wpi/SmallString.h"
|
|
|
|
|
|
|
|
|
|
namespace {
|
|
|
|
|
class StackTraceWalker : public StackWalker {
|
|
|
|
|
public:
|
|
|
|
|
explicit StackTraceWalker(std::string& output) : m_output(output) {}
|
|
|
|
|
|
|
|
|
|
void OnOutput(LPCTSTR szText) override;
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
std::string& m_output;
|
|
|
|
|
};
|
|
|
|
|
} // namespace
|
|
|
|
|
|
|
|
|
|
void StackTraceWalker::OnOutput(LPCTSTR szText) {
|
|
|
|
|
#ifdef _UNICODE
|
|
|
|
|
wpi::SmallString<128> utf8;
|
|
|
|
|
wpi::sys::windows::UTF16ToUTF8(szText, wcslen(szText), utf8);
|
|
|
|
|
m_output.append(utf8.data(), utf8.size());
|
|
|
|
|
#else
|
|
|
|
|
m_output.append(szText);
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
namespace wpi {
|
|
|
|
|
|
2022-01-21 17:22:41 -08:00
|
|
|
std::string GetStackTraceDefault(int offset) {
|
2019-08-12 23:45:45 -07:00
|
|
|
// TODO: implement offset
|
|
|
|
|
std::string output;
|
|
|
|
|
StackTraceWalker walker(output);
|
|
|
|
|
return output;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
} // namespace wpi
|