microsoft / microsoft/vscode-cpptools

GDB selected frame is not updated when changing frame

Open
#12,892 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug debugger help wanted
Dominant language
TypeScript
Stars
6.2k
Forks
1.7k
Avg merge
14h 46m
Merged PRs (30d)
61

Description

Environment
  • OS and version: KUbuntu 22.04
  • VS Code: 1.94.2
  • C/C++ extension:v1.22.10
  • GDB / LLDB version: 12.1
Bug Summary and Steps to Reproduce

Bug Summary: When selecting a new frame using the VSCode interface, it does not always update the frame scope from within GDB.

Steps to reproduce:

  1. Configuration
    This simple C++ files is enough to reproduce the error :
// ccp_tools_bug.cpp
#include <iostream>

void bar() {
  std::cout << "bar" << std::endl;
}

int main() {
  bar();
  return 0;
}

Put a breakpoint on the bar function

  1. Starts the debugger, when stopped on the bar function, you can check the current selected frame using this command :
-exec info frame

Image

Then, use the vscode interface to select the top frame and rerun the command :
Image
Image

You can see the selected frame was updated with success.

Now select the bar frame again and recheck the selected frame :
Image
Image

Here you can see the selected frame is no longer updated.


This is a bug I encountered while developing a plugin for GDB. Unfortunately this bug breaks an important feature for VScode users , and requires to starts gdb manually from a terminal

Debugger Configurations
{
  "name": "(gdb) Launch",
  "type": "cppdbg",
  "request": "launch",
  "program": "${workspaceFolder}/build/examples/cpp_tools_bug",
  "args": [],
  "stopAtEntry": false,
  "cwd": "${fileDirname}",
  "environment": [],
  "externalConsole": false,
  "MIMode": "gdb",
  "setupCommands": [
    {
      "description": "Enable pretty-printing for gdb",
      "text": "-enable-pretty-printing",
      "ignoreFailures": true
    },
    {
      "description": "Set Disassembly Flavor to Intel",
      "text": "-gdb-set disassembly-flavor intel",
      "ignoreFailures": true
    }
  ]
},
Debugger Logs

Too much output, the log comes attached

Other Extensions
  • autoDocstring
  • Black Formatter
  • Clang-Format
  • clangd
  • Cmajor-tools
  • CMake
  • Cmake tools
  • cmake-format
  • Docker
  • CS 128 clang tidy
  • graphical debugging

The issue persists after disabling all these extensions

Here is the log of the debug console : cpp_tools_bug.log

Additional Information

No response

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the issue with ccp_tools_bug.cpp and inspect the attached cpp_tools_bug.log while comparing GDB's info frame output after selecting the top and bar frames in VS Code. Trace the TypeScript debugger frame-selection path and verify that repeated frame switches keep GDB's selected frame synchronized.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
devtools
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.