Breakpoint doesn't work when debug C++ project builded with Bazel in macOS high sierra

0

System details

  • OS and Version: macOS high sierra 10.13.4
  • VS Code Version: 1.25.1
  • C/C++ Extension Version: 0.17.7
  • Other extensions installed
    • bazel: 0.10.0-homebrew
    • lldb: lldb-902.0.79.2
    • gdb: GNU gdb (GDB) 8.0.1

BUG description

I have using bazel to build a tutorial C++ project.The source code is quite simple as below:

#include <iostream>
#include <string>

using namespace std;

void greet(const string& person) {
    cout << "Hello, " << person << "!" << endl;
}

int main(int argc, char** argv) {
    if(argc >= 2) {
        greet(argv[1]);
    } else {
        int x = 0;
        int y = 0;
        int c;
        c = x * y;
        cerr << "insufficient args, usage: " << argv[0] << " personNameHere" << endl;
    }
    return 0;
}

I have a task.json like this to run bazel build :

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "debuggable-build",
            "type": "shell",
            "command": "cd ${workspaceFolder}/hello && bazel build -c dbg --strip=never //hello:main",
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": {
                "owner": "cpp",
                "fileLocation": [
                    "relative",
                    "${workspaceFolder}"
                ],
                "pattern": {
                    "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$",
                    "file": 1,
                    "line": 2,
                    "column": 3,
                    "severity": 4,
                    "message": 5
                }
            }
        }
    ]
}

It works well to generate the runnable main.o in ${workspaceFolder}/bazel-out/darwin-dbg/bin/hello/main

Then I go to debug with lldb in vs code. Let's assume i have set a debug flag in line 11 which as int main(int argc, char** argv) {

My launch.json describes below:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(lldb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/bazel-out/darwin-dbg/bin/hello/main",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "lldb"
        }
    ]
}

Then i push down the debug button in debug panel. However, it never stop in line 11. All of the debug tags turn into grey and it tells me :"unchecked breakpoint" when i hover on it.

The vs code terminal output ended like this:

Loaded '/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGLImage.dylib'. Symbols loaded.
Loaded '/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCVMSPluginSupport.dylib'. Symbols loaded.
Loaded '/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libCoreVMClient.dylib'. Symbols loaded.
Loaded '/usr/lib/libcups.2.dylib'. Symbols loaded.
Loaded '/System/Library/Frameworks/Kerberos.framework/Versions/A/Kerberos'. Symbols loaded.
Loaded '/System/Library/Frameworks/GSS.framework/Versions/A/GSS'. Symbols loaded.
Loaded '/usr/lib/libresolv.9.dylib'. Symbols loaded.
Loaded '/usr/lib/libiconv.2.dylib'. Symbols loaded.
Loaded '/System/Library/PrivateFrameworks/Heimdal.framework/Versions/A/Heimdal'. Symbols loaded.
Loaded '/usr/lib/libheimdal-asn1.dylib'. Symbols loaded.
Loaded '/System/Library/Frameworks/OpenDirectory.framework/Versions/A/OpenDirectory'. Symbols loaded.
Loaded '/System/Library/PrivateFrameworks/CommonAuth.framework/Versions/A/CommonAuth'. Symbols loaded.
Loaded '/System/Library/Frameworks/OpenDirectory.framework/Versions/A/Frameworks/CFOpenDirectory.framework/Versions/A/CFOpenDirectory'. Symbols loaded.
Loaded '/System/Library/Frameworks/SecurityFoundation.framework/Versions/A/SecurityFoundation'. Symbols loaded.
Loaded '/System/Library/PrivateFrameworks/APFS.framework/Versions/A/APFS'. Symbols loaded.
Loaded '/usr/lib/libutil.dylib'. Symbols loaded.
Loaded '/System/Library/Frameworks/CoreAudio.framework/Versions/A/CoreAudio'. Symbols loaded.
Loaded '/System/Library/Frameworks/AudioToolbox.framework/Versions/A/AudioToolbox'. Symbols loaded.
Loaded '/System/Library/PrivateFrameworks/AppleSauce.framework/Versions/A/AppleSauce'. Symbols loaded.
Loaded '/System/Library/PrivateFrameworks/LinguisticData.framework/Versions/A/LinguisticData'. Symbols loaded.
Loaded '/usr/lib/libmarisa.dylib'. Symbols loaded.
Loaded '/System/Library/PrivateFrameworks/Lexicon.framework/Versions/A/Lexicon'. Symbols loaded.
Loaded '/usr/lib/libChineseTokenizer.dylib'. Symbols loaded.
Loaded '/usr/lib/libcmph.dylib'. Symbols loaded.
Loaded '/System/Library/PrivateFrameworks/LanguageModeling.framework/Versions/A/LanguageModeling'. Symbols loaded.
 locations added to breakpoint 1
Loaded '/System/Library/Frameworks/CoreData.framework/Versions/A/CoreData'. Symbols loaded.
Loaded '/System/Library/PrivateFrameworks/CoreEmoji.framework/Versions/A/CoreEmoji'. Symbols loaded.
Loaded '/System/Library/Frameworks/ServiceManagement.framework/Versions/A/ServiceManagement'. Symbols loaded.
Loaded '/System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/BackgroundTaskManagement'. Symbols loaded.
Loaded '/usr/lib/libxslt.1.dylib'. Symbols loaded.
Loaded '/Users/shihuashen/x-mesh/example/bazel-out/darwin-dbg/bin/hello/main'. Symbols loaded.
Loaded '/System/Library/CoreServices/Encodings/libSimplifiedChineseConverter.dylib'. Symbols loaded.
The program '/Users/shihuashen/x-mesh/example/bazel-out/darwin-dbg/bin/hello/main' has exited with code 0 (0x00000000).

In the running terminal which started by vs code, it seems the program just runs well and ended without any break:

Launching: '/Users/shihuashen/x-mesh/example/bazel-out/darwin-dbg/bin/hello/main'
Working directory: '/Users/shihuashen/x-mesh/example'
1 arguments:
argv[0] = '/Users/shihuashen/x-mesh/example/bazel-out/darwin-dbg/bin/hello/main'
insufficient args, usage: /Users/shihuashen/x-mesh/example/bazel-out/darwin-dbg/bin/hello/main personNameHere
Process exited with status 0
logout
Saving session...
...copying shared history...
...saving history...truncating history files...
...completed.

I have notice with bazel need to set build -c dbg --strip=never to support debug so as i did. Meanwhile, i have tried to run lldb in terminal and it seems works well. The output looks like this:

shihuashendeMacBook-Pro:hello shihuashen$ lldb main
(lldb) target create "main"
Current executable set to 'main' (x86_64).
(lldb) breakpoint set -n main
Breakpoint 1: 14 locations.
(lldb) r
Process 21174 launched: '/Users/shihuashen/x-mesh/example/bazel-out/darwin-dbg/bin/hello/main' (x86_64)
4 locations added to breakpoint 1
Process 21174 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = breakpoint 1.1
    frame #0: 0x0000000100002120 main`main
main`main:
->  0x100002120 <+0>:  pushq  %rbp
    0x100002121 <+1>:  movq   %rsp, %rbp
    0x100002124 <+4>:  subq   $0xc0, %rsp
    0x10000212b <+11>: movl   $0x0, -0x5c(%rbp)
Target 0: (main) stopped.
(lldb) n
Process 21174 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = instruction step over
    frame #0: 0x0000000100002121 main`main + 1
main`main:
->  0x100002121 <+1>:  movq   %rsp, %rbp
    0x100002124 <+4>:  subq   $0xc0, %rsp
    0x10000212b <+11>: movl   $0x0, -0x5c(%rbp)
    0x100002132 <+18>: movl   %edi, -0x60(%rbp)
Target 0: (main) stopped.
(lldb) n

Have i make some mistakes or abuse the bazel or vs code? Or anyone could supply a config json in vscode which can be debug bazel projects? Glad to hear any suggestion and comments from pros.

c++
macos
debugging
visual-studio-code
bazel
asked on Stack Overflow Jul 26, 2018 by wilson.tony

0 Answers

Nobody has answered this question yet.


User contributions licensed under CC BY-SA 3.0