【问题标题】:VSCode Debuging GCC Condition breakpoint with stringVSCode用字符串调试GCC条件断点
【发布时间】:2022-01-14 13:36:38
【问题描述】:

VS 代码!!我如何设置断点的条件,如 v.compare("2") == 0,思想界面。我用这个 C/C++ IntelliSense、调试和代码浏览。

断点未激活

enter image description here

直接在 GDB 中工作

(gdb) 条件 1 v.compare("2") == 0 (gdb) i b Num Type
Disp Enb Address What 1 breakpoint keep y
0x000000000000166e in tttt(std::__cxx11::basic_string const&, bool) 在/home/butiaev/project/experience/vecxsdeq/project/executable/vecxsdeq.cpp:53 仅当 v.compare("2") == 0 (gdb) 时才停止

【问题讨论】:

    标签: c++ visual-studio-code conditional-statements breakpoints


    【解决方案1】:

    假设您已在 VSCode 中设置 gdb 作为调试后端:

    • 在行号左侧左键单击设置断点
    • 出现一个红点
    • 右键单击红点并选择Edit breakpoint,您将能够指定表达式、选择命中数或将断点转换为跟踪点。

    【讨论】:

    • 我知道...但它不适用于 string 。看附图
    • 你能在 vscode 调试器控制台打印这个表达式吗?
    • BP 的表达式看起来像 v.compare("2") == 0。state.vscdb.backup 中的字符串看起来像 INSERT INTO ItemTable VALUES('debug.breakpoint','[{"enabled ":true,"condition":"v.compare(\"2\") == 0","uri":{"$mid":1,"fsPath":"/home/butiaev/project/experience/ vecxsdeq/project/executable/vecxsdeq.cpp","external":"file:///home/butiaev/project/experience/vecxsdeq/project/executable/vecxsdeq.cpp","path":"/home/butiaev /project/experience/vecxsdeq/project/executable/vecxsdeq.cpp","scheme":"file"},"lineNumber":54}]');
    • 已加载“/lib/x86_64-linux-gnu/libm.so.6”。已加载符号。使用“-exec ”执行调试器命令,例如“-exec info registers”将列出正在使用的寄存器(当 GDB 是调试器时) -exec i b 没有断点或观察点。
    • 使用 "-exec " 执行调试器命令,例如 "-exec info registers" 将列出正在使用的寄存器(当 GDB 是调试器时) 断点 2,main (ac=1, av =0x7fffffffdbc8) 在 /home/butiaev/project/experience/vecxsdeq/project/executable/vecxsdeq.cpp:59 59 tttt("1", true); -exec i b Num Type Disp Enb Address What 2 breakpoint keep y 0x00005555555556b8 in main(int, char**) at /home/butiaev/project/experience/vecxsdeq/project/executable/vecxsdeq.cpp:59 断点已经命中 1 次
    猜你喜欢
    • 1970-01-01
    • 2020-01-27
    • 2023-04-07
    • 2019-07-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多