System details
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.
User contributions licensed under CC BY-SA 3.0