MCPcopy Create free account
hub / github.com/Codeya-IDE/deepin-ide / rawUpdate

Method rawUpdate

src/plugins/debugger/dap/debugsession.cpp:366–415  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

364}
365
366void DebugSession::rawUpdate(IRawModelUpdate *data)
367{
368 threadIds.clear();
369
370 for (auto thread : data->threads) {
371 threadIds.push_back(thread.id);
372 if (threads.find(thread.id) == threads.end()) {
373 // save the new thread.
374 threads.insert(std::pair<dapNumber, Thread *>(thread.id, new Thread(this, thread.name, thread.id)));
375 } else if (!thread.name.empty()) {
376 // update thread name.
377 auto oldThread = threads.find(thread.id);
378 if (oldThread != threads.end()) {
379 oldThread->second->name = thread.name;
380 }
381 }
382 }
383
384 // Remove all old threads which are no longer part of the update
385 for (auto t = threads.begin(); t != threads.end();) {
386 auto it = std::find(threadIds.begin(), threadIds.end(), t->first);
387 if (it == threadIds.end()) {
388 t = threads.erase(t);
389 } else {
390 ++t;
391 }
392 }
393
394 auto stoppedDetails = data->stoppedDetails;
395 if (stoppedDetails) {
396 if (stoppedDetails->allThreadsStopped) {
397 for (auto thread : threads) {
398 if (thread.second->threadId == stoppedDetails->threadId.value()) {
399 thread.second->stoppedDetails = stoppedDetails;
400 thread.second->stopped = true;
401 thread.second->clearCallStack();
402 }
403 }
404 } else {
405 if (stoppedDetails->threadId) {
406 auto thread = threads.find(stoppedDetails->threadId.value());
407 if (thread != threads.end()) {
408 thread->second->stoppedDetails = stoppedDetails;
409 thread->second->clearCallStack();
410 thread->second->stopped = true;
411 }
412 }
413 }
414 }
415}
416
417dap::array<IRawStoppedDetails *> &DebugSession::getStoppedDetails()
418{

Callers 1

fetchThreadsMethod · 0.45

Calls 9

insertMethod · 0.80
eraseMethod · 0.80
clearCallStackMethod · 0.80
clearMethod · 0.45
findMethod · 0.45
endMethod · 0.45
emptyMethod · 0.45
beginMethod · 0.45
valueMethod · 0.45

Tested by

no test coverage detected