Add DebuggerLogBitmask debug variable to switch log levels
Signed-off-by: Mateusz Hoppe <mateusz.hoppe@intel.com>
This commit is contained in:
parent
8db55b246b
commit
e93dc9c61a
|
@ -7,6 +7,7 @@
|
|||
|
||||
#include "shared/source/command_container/cmdcontainer.h"
|
||||
#include "shared/source/device/device.h"
|
||||
#include "shared/source/helpers/file_io.h"
|
||||
#include "shared/source/os_interface/os_interface.h"
|
||||
#include "shared/source/source_level_debugger/source_level_debugger.h"
|
||||
#include "shared/test/common/helpers/debug_manager_state_restore.h"
|
||||
|
@ -730,3 +731,79 @@ TEST(SourceLevelDebugger, givenMode2InEnableMockSourceLevelDebuggerWhenDebuggerC
|
|||
auto sld = std::unique_ptr<SourceLevelDebugger>(SourceLevelDebugger::create());
|
||||
EXPECT_FALSE(sld->isOptimizationDisabled());
|
||||
}
|
||||
|
||||
TEST(SourceLevelDebugger, givenDebugVarDumpElfWhenNotifyKernelDebugDataIsCalledThenElfFileIsCreated) {
|
||||
DebugManagerStateRestore stateRestore;
|
||||
DebugManager.flags.DebuggerLogBitmask.set(NEO::DebugVariables::DEBUGGER_LOG_BITMASK::DUMP_ELF);
|
||||
|
||||
DebuggerLibraryRestorer restorer;
|
||||
|
||||
DebuggerLibraryInterceptor interceptor;
|
||||
DebuggerLibrary::setLibraryAvailable(true);
|
||||
DebuggerLibrary::setDebuggerActive(true);
|
||||
DebuggerLibrary::injectDebuggerLibraryInterceptor(&interceptor);
|
||||
|
||||
MockSourceLevelDebugger debugger;
|
||||
char isa[8];
|
||||
char dbgIsa[10];
|
||||
char visa[12];
|
||||
|
||||
KernelInfo info;
|
||||
info.debugData.genIsa = dbgIsa;
|
||||
info.debugData.vIsa = visa;
|
||||
info.debugData.genIsaSize = sizeof(dbgIsa);
|
||||
info.debugData.vIsaSize = sizeof(visa);
|
||||
|
||||
info.kernelDescriptor.kernelMetadata.kernelName = "debugKernel";
|
||||
|
||||
info.heapInfo.KernelHeapSize = sizeof(isa);
|
||||
info.heapInfo.pKernelHeap = isa;
|
||||
|
||||
std::string fileName = info.kernelDescriptor.kernelMetadata.kernelName + ".elf";
|
||||
EXPECT_FALSE(fileExists(fileName));
|
||||
|
||||
debugger.notifyKernelDebugData(&info.debugData, info.kernelDescriptor.kernelMetadata.kernelName, info.heapInfo.pKernelHeap, info.heapInfo.KernelHeapSize);
|
||||
EXPECT_TRUE(fileExists(fileName));
|
||||
std::remove(fileName.c_str());
|
||||
}
|
||||
|
||||
TEST(SourceLevelDebugger, givenDebugVarDumpElfWhenElfFileExistsWhileNotifyingDebugDataThenSuffixIsAppendedToFileName) {
|
||||
DebugManagerStateRestore stateRestore;
|
||||
DebugManager.flags.DebuggerLogBitmask.set(NEO::DebugVariables::DEBUGGER_LOG_BITMASK::DUMP_ELF);
|
||||
|
||||
DebuggerLibraryRestorer restorer;
|
||||
|
||||
DebuggerLibraryInterceptor interceptor;
|
||||
DebuggerLibrary::setLibraryAvailable(true);
|
||||
DebuggerLibrary::setDebuggerActive(true);
|
||||
DebuggerLibrary::injectDebuggerLibraryInterceptor(&interceptor);
|
||||
|
||||
MockSourceLevelDebugger debugger;
|
||||
char isa[8];
|
||||
char dbgIsa[10];
|
||||
char visa[12];
|
||||
|
||||
KernelInfo info;
|
||||
info.debugData.genIsa = dbgIsa;
|
||||
info.debugData.vIsa = visa;
|
||||
info.debugData.genIsaSize = sizeof(dbgIsa);
|
||||
info.debugData.vIsaSize = sizeof(visa);
|
||||
|
||||
info.kernelDescriptor.kernelMetadata.kernelName = "debugKernel";
|
||||
|
||||
info.heapInfo.KernelHeapSize = sizeof(isa);
|
||||
info.heapInfo.pKernelHeap = isa;
|
||||
|
||||
std::string fileName = info.kernelDescriptor.kernelMetadata.kernelName + ".elf";
|
||||
char data[4];
|
||||
writeDataToFile(fileName.c_str(), data, 4);
|
||||
EXPECT_TRUE(fileExists(fileName));
|
||||
|
||||
std::string fileName2 = info.kernelDescriptor.kernelMetadata.kernelName + "_0.elf";
|
||||
debugger.notifyKernelDebugData(&info.debugData, info.kernelDescriptor.kernelMetadata.kernelName, info.heapInfo.pKernelHeap, info.heapInfo.KernelHeapSize);
|
||||
|
||||
EXPECT_TRUE(fileExists(fileName2));
|
||||
|
||||
std::remove(fileName.c_str());
|
||||
std::remove(fileName2.c_str());
|
||||
}
|
||||
|
|
|
@ -227,3 +227,4 @@ OverrideSlmAllocationSize = -1
|
|||
OverrideSlmSize = -1
|
||||
UseCyclesPerSecondTimer = 0
|
||||
WaitLoopCount = -1
|
||||
DebuggerLogBitmask = 0
|
|
@ -68,6 +68,12 @@ struct DebugVarBase {
|
|||
};
|
||||
|
||||
struct DebugVariables {
|
||||
struct DEBUGGER_LOG_BITMASK {
|
||||
constexpr static int32_t LOG_INFO{1};
|
||||
constexpr static int32_t LOG_ERROR{1 << 1};
|
||||
constexpr static int32_t DUMP_ELF{1 << 10};
|
||||
};
|
||||
|
||||
#define DECLARE_DEBUG_VARIABLE(dataType, variableName, defaultValue, description) \
|
||||
DebugVarBase<dataType> variableName{defaultValue};
|
||||
#include "debug_variables.inl"
|
||||
|
|
|
@ -93,6 +93,7 @@ DECLARE_DEBUG_VARIABLE(int32_t, GpuScratchRegWriteAfterWalker, -1, "-1: disabled
|
|||
DECLARE_DEBUG_VARIABLE(int32_t, GpuScratchRegWriteRegisterOffset, 0, "register offset for GPU scratch register write after walker")
|
||||
DECLARE_DEBUG_VARIABLE(int32_t, GpuScratchRegWriteRegisterData, 0, "register data for GPU scratch register write after walker")
|
||||
DECLARE_DEBUG_VARIABLE(int32_t, OverrideSlmAllocationSize, -1, "-1: default, >=0: program value for shared local memory size")
|
||||
DECLARE_DEBUG_VARIABLE(int32_t, DebuggerLogBitmask, 0, "0: logs disabled, != 0: see DebugVariables::DEBUGGER_LOG_BITMASK")
|
||||
|
||||
/*LOGGING FLAGS*/
|
||||
DECLARE_DEBUG_VARIABLE(int32_t, PrintDriverDiagnostics, -1, "prints driver diagnostics messages to standard output, value corresponds to hint level")
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (C) 2018-2020 Intel Corporation
|
||||
* Copyright (C) 2018-2021 Intel Corporation
|
||||
*
|
||||
* SPDX-License-Identifier: MIT
|
||||
*
|
||||
|
@ -10,6 +10,7 @@
|
|||
#include "shared/source/debug_settings/debug_settings_manager.h"
|
||||
#include "shared/source/debugger/debugger.h"
|
||||
#include "shared/source/helpers/debug_helpers.h"
|
||||
#include "shared/source/helpers/file_io.h"
|
||||
#include "shared/source/kernel/debug_data.h"
|
||||
#include "shared/source/os_interface/os_interface.h"
|
||||
|
||||
|
@ -213,6 +214,18 @@ bool SourceLevelDebugger::notifyKernelDebugData(const DebugData *debugData, cons
|
|||
kernelDebugData.dbgVisaSize = debugData->vIsaSize;
|
||||
kernelDebugData.dbgGenIsaBuffer = debugData->genIsa;
|
||||
kernelDebugData.dbgGenIsaSize = debugData->genIsaSize;
|
||||
|
||||
if (NEO::DebugManager.flags.DebuggerLogBitmask.get() & NEO::DebugVariables::DEBUGGER_LOG_BITMASK::DUMP_ELF) {
|
||||
std::ofstream elfFile;
|
||||
std::string fileName = name + ".elf";
|
||||
|
||||
int suffix = 0;
|
||||
while (fileExists(fileName)) {
|
||||
fileName = name + "_" + std::to_string(suffix) + ".elf";
|
||||
suffix++;
|
||||
}
|
||||
writeDataToFile(fileName.c_str(), kernelDebugData.dbgVisaBuffer, kernelDebugData.dbgVisaSize);
|
||||
}
|
||||
}
|
||||
|
||||
if (sourceLevelDebuggerInterface) {
|
||||
|
|
Loading…
Reference in New Issue