MCPcopy Create free account
hub / github.com/Vector35/debugger / AttachInternal

Method AttachInternal

core/adapters/dbgengadapter.cpp:539–582  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

537}
538
539bool DbgEngAdapter::AttachInternal(std::uint32_t pid)
540{
541 m_aboutToBeKilled = false;
542
543 if (this->m_debugActive)
544 this->Reset();
545
546 this->Start();
547
548 if (const auto result = this->m_debugControl->SetEngineOptions(DEBUG_ENGOPT_INITIAL_BREAK); result != S_OK)
549 {
550 this->Reset();
551 DebuggerEvent event;
552 event.type = LaunchFailureEventType;
553 event.data.errorData.error = fmt::format("Failed to engine option DEBUG_ENGOPT_INITIAL_BREAK");
554 event.data.errorData.shortError = fmt::format("Failed to engine option");
555 PostDebuggerEvent(event);
556 return false;
557 }
558
559 if (const auto result = this->m_debugClient->AttachProcess(m_server, pid, 0); result != S_OK)
560 {
561 this->Reset();
562 DebuggerEvent event;
563 event.type = LaunchFailureEventType;
564 event.data.errorData.error = fmt::format("AttachProcess failed: 0x{:x}", result);
565 event.data.errorData.shortError = fmt::format("AttachProcess failed: 0x{:x}", result);
566 PostDebuggerEvent(event);
567 return false;
568 }
569
570 if (!Wait())
571 {
572 DebuggerEvent event;
573 event.type = LaunchFailureEventType;
574 event.data.errorData.error = fmt::format("WaitForEvent failed");
575 event.data.errorData.shortError = fmt::format("WaitForEvent failed");
576 PostDebuggerEvent(event);
577 }
578
579 ApplyBreakpoints();
580
581 return true;
582}
583
584bool DbgEngAdapter::Attach(std::uint32_t pid)
585{

Callers

nothing calls this directly

Calls 2

ResetMethod · 0.95
StartMethod · 0.95

Tested by

no test coverage detected