mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-24 20:39:56 +08:00
Don't call source level debugger, when kernel doesn't contain debug info
Change-Id: I0cc0eb35d16fb7f46584781362886aaa44bde3ec
This commit is contained in:
committed by
sys_ocldev
parent
3b8ff44d55
commit
0a9ea8fbfd
@@ -176,7 +176,7 @@ bool SourceLevelDebugger::isOptimizationDisabled() const {
|
||||
}
|
||||
|
||||
bool SourceLevelDebugger::notifyKernelDebugData(const KernelInfo *kernelInfo) const {
|
||||
if (isActive) {
|
||||
if (isActive && kernelInfo->debugData.vIsa && kernelInfo->debugData.genIsa) {
|
||||
GfxDbgKernelDebugData kernelDebugData;
|
||||
kernelDebugData.hDevice = reinterpret_cast<GfxDeviceHandle>(static_cast<uint64_t>(this->deviceHandle));
|
||||
kernelDebugData.version = IGFXDBG_CURRENT_VERSION;
|
||||
|
||||
@@ -313,6 +313,64 @@ TEST(SourceLevelDebugger, givenKernelDebuggerLibraryActiveWhenNotifyKernelDebugD
|
||||
EXPECT_STREQ(info.name.c_str(), interceptor.kernelDebugDataArgIn.kernelName);
|
||||
}
|
||||
|
||||
TEST(SourceLevelDebugger, givenNoVisaWhenNotifyKernelDebugDataIsCalledThenDebuggerLibraryFunctionIsNotCalled) {
|
||||
DebuggerLibraryRestorer restorer;
|
||||
|
||||
DebuggerLibraryInterceptor interceptor;
|
||||
DebuggerLibrary::setLibraryAvailable(true);
|
||||
DebuggerLibrary::setDebuggerActive(true);
|
||||
DebuggerLibrary::injectDebuggerLibraryInterceptor(&interceptor);
|
||||
|
||||
MockSourceLevelDebugger debugger;
|
||||
char isa[8];
|
||||
char dbgIsa[10];
|
||||
|
||||
KernelInfo info;
|
||||
info.debugData.genIsa = dbgIsa;
|
||||
info.debugData.vIsa = nullptr;
|
||||
info.debugData.genIsaSize = sizeof(dbgIsa);
|
||||
info.debugData.vIsaSize = 0;
|
||||
|
||||
info.name = "debugKernel";
|
||||
|
||||
SKernelBinaryHeaderCommon kernelHeader;
|
||||
kernelHeader.KernelHeapSize = sizeof(isa);
|
||||
info.heapInfo.pKernelHeader = &kernelHeader;
|
||||
info.heapInfo.pKernelHeap = isa;
|
||||
|
||||
debugger.notifyKernelDebugData(&info);
|
||||
EXPECT_FALSE(interceptor.kernelDebugDataCalled);
|
||||
}
|
||||
|
||||
TEST(SourceLevelDebugger, givenNoGenIsaWhenNotifyKernelDebugDataIsCalledThenDebuggerLibraryFunctionIsNotCalled) {
|
||||
DebuggerLibraryRestorer restorer;
|
||||
|
||||
DebuggerLibraryInterceptor interceptor;
|
||||
DebuggerLibrary::setLibraryAvailable(true);
|
||||
DebuggerLibrary::setDebuggerActive(true);
|
||||
DebuggerLibrary::injectDebuggerLibraryInterceptor(&interceptor);
|
||||
|
||||
MockSourceLevelDebugger debugger;
|
||||
char isa[8];
|
||||
char visa[12];
|
||||
|
||||
KernelInfo info;
|
||||
info.debugData.genIsa = nullptr;
|
||||
info.debugData.vIsa = visa;
|
||||
info.debugData.genIsaSize = 0;
|
||||
info.debugData.vIsaSize = sizeof(visa);
|
||||
|
||||
info.name = "debugKernel";
|
||||
|
||||
SKernelBinaryHeaderCommon kernelHeader;
|
||||
kernelHeader.KernelHeapSize = sizeof(isa);
|
||||
info.heapInfo.pKernelHeader = &kernelHeader;
|
||||
info.heapInfo.pKernelHeap = isa;
|
||||
|
||||
debugger.notifyKernelDebugData(&info);
|
||||
EXPECT_FALSE(interceptor.kernelDebugDataCalled);
|
||||
}
|
||||
|
||||
TEST(SourceLevelDebugger, givenKernelDebuggerLibraryNotActiveWhenNotifyKernelDebugDataIsCalledThenDebuggerLibraryFunctionIsNotCalled) {
|
||||
DebuggerLibraryRestorer restorer;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user