mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-22 10:17:01 +08:00
Add DebuggerLogBitmask debug variable to switch log levels
Signed-off-by: Mateusz Hoppe <mateusz.hoppe@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
8db55b246b
commit
e93dc9c61a
@@ -7,6 +7,7 @@
|
|||||||
|
|
||||||
#include "shared/source/command_container/cmdcontainer.h"
|
#include "shared/source/command_container/cmdcontainer.h"
|
||||||
#include "shared/source/device/device.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/os_interface/os_interface.h"
|
||||||
#include "shared/source/source_level_debugger/source_level_debugger.h"
|
#include "shared/source/source_level_debugger/source_level_debugger.h"
|
||||||
#include "shared/test/common/helpers/debug_manager_state_restore.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());
|
auto sld = std::unique_ptr<SourceLevelDebugger>(SourceLevelDebugger::create());
|
||||||
EXPECT_FALSE(sld->isOptimizationDisabled());
|
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
|
OverrideSlmSize = -1
|
||||||
UseCyclesPerSecondTimer = 0
|
UseCyclesPerSecondTimer = 0
|
||||||
WaitLoopCount = -1
|
WaitLoopCount = -1
|
||||||
|
DebuggerLogBitmask = 0
|
||||||
@@ -68,6 +68,12 @@ struct DebugVarBase {
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct DebugVariables {
|
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) \
|
#define DECLARE_DEBUG_VARIABLE(dataType, variableName, defaultValue, description) \
|
||||||
DebugVarBase<dataType> variableName{defaultValue};
|
DebugVarBase<dataType> variableName{defaultValue};
|
||||||
#include "debug_variables.inl"
|
#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, 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, 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, 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*/
|
/*LOGGING FLAGS*/
|
||||||
DECLARE_DEBUG_VARIABLE(int32_t, PrintDriverDiagnostics, -1, "prints driver diagnostics messages to standard output, value corresponds to hint level")
|
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
|
* SPDX-License-Identifier: MIT
|
||||||
*
|
*
|
||||||
@@ -10,6 +10,7 @@
|
|||||||
#include "shared/source/debug_settings/debug_settings_manager.h"
|
#include "shared/source/debug_settings/debug_settings_manager.h"
|
||||||
#include "shared/source/debugger/debugger.h"
|
#include "shared/source/debugger/debugger.h"
|
||||||
#include "shared/source/helpers/debug_helpers.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/kernel/debug_data.h"
|
||||||
#include "shared/source/os_interface/os_interface.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.dbgVisaSize = debugData->vIsaSize;
|
||||||
kernelDebugData.dbgGenIsaBuffer = debugData->genIsa;
|
kernelDebugData.dbgGenIsaBuffer = debugData->genIsa;
|
||||||
kernelDebugData.dbgGenIsaSize = debugData->genIsaSize;
|
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) {
|
if (sourceLevelDebuggerInterface) {
|
||||||
|
|||||||
Reference in New Issue
Block a user