microsoft / microsoft/vscode-cpptools
-exec awatch triggers unknown exceptions
Đang mở
Chưa có ai nhận issue này.
bug
debugger
help wanted
- Ngôn ngữ chính
- TypeScript
- Star
- 6.2k
- Fork
- 1.7k
- Merge trung bình
- 14 giờ 46 phút
- Pull request đã merge (30 ngày)
- 61
Mô tả
Environment
- OS and version: Manjaro Linux 25
- VS Code: 1.105.1
- C/C++ extension: 1.28.3
- OS and version of remote machine (if applicable): Windows 11 25H2
- GDB / LLDB version: 16.3
Bug Summary and Steps to Reproduce
Bug Summary:
-exec awatch triggers unknown exceptions
#include <cstdio>
#include <string>
#include <windows.h>
int main(int argc, char *argv[]) {
int a = 123;
int b = a;
a += 1;
printf("Hello, World! %d\n", a);
}
Steps to reproduce:
- set breakpoint at line 6 then start debug windows exe
- -exec awatch a
- F10
Debugger Configurations
{
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${command:cmake.launchTargetPath}",
"args": [],
"stopAtEntry": false,
"cwd": "${fileDirname}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"miDebuggerServerAddress": "private:2345",
"preLaunchTask": "deploy",
"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
}
],
"logging": {
"engineLogging": true,
"trace": true,
"traceResponse": true
}
}
]
}
Debugger Logs
<-- C (next-18): {"command":"next","arguments":{"threadId":5148},"type":"request","seq":18}
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7966) <-1036-exec-next --thread 1 --frame 0 \n"},"seq":536}
1: (7966) <-1036-exec-next --thread 1 --frame 0
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7967) ->1036^running\n"},"seq":538}
1: (7967) ->1036^running
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7967) ->*running,thread-id=\"all\"\n"},"seq":540}
1: (7967) ->*running,thread-id="all"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7968) 1036: elapsed time 1\n"},"seq":542}
1: (7968) 1036: elapsed time 1
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7970) ->(gdb)\n"},"seq":545}
1: (7970) ->(gdb)
--> R (next-18): {"type":"response","request_seq":18,"success":true,"command":"next","body":{},"seq":544}
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7971) ->=breakpoint-modified,bkpt={number=\"4\",type=\"acc watchpoint\",disp=\"keep\",enabled=\"y\",what=\"a\",thread-groups=[\"i1\"],times=\"1\",original-location=\"a\"}\n"},"seq":548}
1: (7971) ->=breakpoint-modified,bkpt={number="4",type="acc watchpoint",disp="keep",enabled="y",what="a",thread-groups=["i1"],times="1",original-location="a"}
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7974) ->~\"\\n\"\n"},"seq":550}
1: (7974) ->~"\n"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7974) ->~\"Thread 1 hit Hardware access (read/write) watchpoint 4: a\\n\"\n"},"seq":552}
1: (7974) ->~"Thread 1 hit Hardware access (read/write) watchpoint 4: a\n"
--> E (output): {"type":"event","event":"output","body":{"category":"stdout","output":"\n"},"seq":553}
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7974) ->~\"\\n\"\n"},"seq":556}
1: (7974) ->~"\n"
--> E (output): {"type":"event","event":"output","body":{"category":"stdout","output":"Thread 1 hit Hardware access (read/write) watchpoint 4: a\n"},"seq":559}
Thread 1 hit Hardware access (read/write) watchpoint 4: a
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7974) ->~\"Value = 123\\n\"\n"},"seq":558}
1: (7974) ->~"Value = 123\n"
--> E (output): {"type":"event","event":"output","body":{"category":"stdout","output":"\n"},"seq":562}
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7974) ->~\"0x00007ff670e3155e in main (argc=1, argv=0x7d90f0) at /home/allen/\\346\\241\\214\\351\\235\\242/test_cpp/main.cc:6\\n\"\n"},"seq":564}
1: (7974) ->~"0x00007ff670e3155e in main (argc=1, argv=0x7d90f0) at /home/allen/\346\241\214\351\235\242/test_cpp/main.cc:6\n"
--> E (output): {"type":"event","event":"output","body":{"category":"stdout","output":"Value = 123\n"},"seq":566}
Value = 123
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7974) ->~\"6\\t int b = a;\\n\"\n"},"seq":568}
1: (7974) ->~"6\t int b = a;\n"
--> E (output): {"type":"event","event":"output","body":{"category":"stdout","output":"0x00007ff670e3155e in main (argc=1, argv=0x7d90f0) at /home/allen/桌面/test_cpp/main.cc:6\n"},"seq":570}
0x00007ff670e3155e in main (argc=1, argv=0x7d90f0) at /home/allen/桌面/test_cpp/main.cc:6
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7974) ->*stopped,hw-awpt={number=\"4\",exp=\"a\"},reason=\"access-watchpoint-trigger\",value={new=\"123\"},frame={addr=\"0x00007ff670e3155e\",func=\"main\",args=[{name=\"argc\",value=\"1\"},{name=\"argv\",value=\"0x7d90f0\"}],file=\"/home/allen/\\346\\241\\214\\351\\235\\242/test_cpp/main.cc\",fullname=\"/home/allen/\\346\\241\\214\\351\\235\\242/test_cpp/main.cc\",line=\"6\",arch=\"i386:x86-64\"},thread-id=\"1\",stopped-threads=\"all\"\n"},"seq":572}
1: (7974) ->*stopped,hw-awpt={number="4",exp="a"},reason="access-watchpoint-trigger",value={new="123"},frame={addr="0x00007ff670e3155e",func="main",args=[{name="argc",value="1"},{name="argv",value="0x7d90f0"}],file="/home/allen/\346\241\214\351\235\242/test_cpp/main.cc",fullname="/home/allen/\346\241\214\351\235\242/test_cpp/main.cc",line="6",arch="i386:x86-64"},thread-id="1",stopped-threads="all"
--> E (output): {"type":"event","event":"output","body":{"category":"stdout","output":"6\t int b = a;\n"},"seq":574}
6 int b = a;
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7975) <-1037-stack-list-frames --thread 1 0 1000\n"},"seq":576}
1: (7975) <-1037-stack-list-frames --thread 1 0 1000
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7976) ->1037^done,stack=[frame={level=\"0\",addr=\"0x00007ff670e3155e\",func=\"main\",file=\"/home/allen/\\346\\241\\214\\351\\235\\242/test_cpp/main.cc\",fullname=\"/home/allen/\\346\\241\\214\\351\\235\\242/test_cpp/main.cc\",line=\"6\",arch=\"i386:x86-64\"}]\n"},"seq":578}
1: (7976) ->1037^done,stack=[frame={level="0",addr="0x00007ff670e3155e",func="main",file="/home/allen/\346\241\214\351\235\242/test_cpp/main.cc",fullname="/home/allen/\346\241\214\351\235\242/test_cpp/main.cc",line="6",arch="i386:x86-64"}]
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7976) ->(gdb)\n"},"seq":580}
1: (7976) ->(gdb)
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7976) 1037: elapsed time 0\n"},"seq":582}
1: (7976) 1037: elapsed time 0
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7977) <-1038-var-delete var1\n"},"seq":584}
1: (7977) <-1038-var-delete var1
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7977) ->1038^done,ndeleted=\"1\"\n"},"seq":586}
1: (7977) ->1038^done,ndeleted="1"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7978) ->(gdb)\n"},"seq":588}
1: (7978) ->(gdb)
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7978) 1038: elapsed time 1\n"},"seq":590}
1: (7978) 1038: elapsed time 1
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7979) <-1039-var-delete var2\n"},"seq":592}
1: (7979) <-1039-var-delete var2
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7979) ->1039^done,ndeleted=\"1\"\n"},"seq":594}
1: (7979) ->1039^done,ndeleted="1"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7979) ->(gdb)\n"},"seq":596}
1: (7979) ->(gdb)
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7979) 1039: elapsed time 0\n"},"seq":598}
1: (7979) 1039: elapsed time 0
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7979) <-1040-var-delete var3\n"},"seq":600}
1: (7979) <-1040-var-delete var3
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7980) ->1040^done,ndeleted=\"1\"\n"},"seq":602}
1: (7980) ->1040^done,ndeleted="1"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7980) ->(gdb)\n"},"seq":604}
1: (7980) ->(gdb)
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7980) 1040: elapsed time 0\n"},"seq":606}
1: (7980) 1040: elapsed time 0
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7980) <-1041-var-delete var4\n"},"seq":608}
1: (7980) <-1041-var-delete var4
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7980) ->1041^done,ndeleted=\"1\"\n"},"seq":610}
1: (7980) ->1041^done,ndeleted="1"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7980) ->(gdb)\n"},"seq":612}
1: (7980) ->(gdb)
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7980) 1041: elapsed time 0\n"},"seq":614}
1: (7980) 1041: elapsed time 0
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7980) <-1042-var-delete var5\n"},"seq":616}
1: (7980) <-1042-var-delete var5
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7980) ->1042^done,ndeleted=\"1\"\n"},"seq":618}
1: (7980) ->1042^done,ndeleted="1"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7980) ->(gdb)\n"},"seq":620}
1: (7980) ->(gdb)
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7980) 1042: elapsed time 0\n"},"seq":622}
1: (7980) 1042: elapsed time 0
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7981) <-1043-var-delete var6\n"},"seq":624}
1: (7981) <-1043-var-delete var6
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7981) ->1043^done,ndeleted=\"1\"\n"},"seq":626}
1: (7981) ->1043^done,ndeleted="1"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7981) ->(gdb)\n"},"seq":628}
1: (7981) ->(gdb)
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7981) 1043: elapsed time 0\n"},"seq":630}
1: (7981) 1043: elapsed time 0
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7981) <-1044-var-delete var7\n"},"seq":632}
1: (7981) <-1044-var-delete var7
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7981) ->1044^done,ndeleted=\"1\"\n"},"seq":634}
1: (7981) ->1044^done,ndeleted="1"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7981) ->(gdb)\n"},"seq":636}
1: (7981) ->(gdb)
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7981) 1044: elapsed time 0\n"},"seq":638}
1: (7981) 1044: elapsed time 0
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7981) <-1045-var-delete var8\n"},"seq":640}
1: (7981) <-1045-var-delete var8
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7981) ->1045^done,ndeleted=\"1\"\n"},"seq":642}
1: (7981) ->1045^done,ndeleted="1"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7981) ->(gdb)\n"},"seq":644}
1: (7981) ->(gdb)
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7981) 1045: elapsed time 0\n"},"seq":646}
1: (7981) 1045: elapsed time 0
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7982) Send Event AD7ExceptionEvent\n"},"seq":648}
1: (7982) Send Event AD7ExceptionEvent
--> E (stopped): {"type":"event","event":"stopped","body":{"reason":"exception","threadId":5148,"text":"Unknown stopping event","allThreadsStopped":true,"source":{"name":"main.cc","path":"/home/allen/桌面/test_cpp/main.cc","sources":[],"checksums":[]},"line":6,"column":1},"seq":650}
<-- C (threads-19): {"command":"threads","type":"request","seq":19}
--> R (threads-19): {"type":"response","request_seq":19,"success":true,"command":"threads","body":{"threads":[{"id":5148,"name":" [5148]"},{"id":4552,"name":" [4552]"}]},"seq":653}
<-- C (stackTrace-20): {"command":"stackTrace","arguments":{"threadId":5148,"startFrame":0,"levels":20},"type":"request","seq":20}
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7993) <-1046-stack-list-arguments --thread 1 2 0 0\n"},"seq":656}
1: (7993) <-1046-stack-list-arguments --thread 1 2 0 0
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7994) ->1046^done,stack-args=[frame={level=\"0\",args=[{name=\"argc\",type=\"int\",value=\"1\"},{name=\"argv\",type=\"char **\",value=\"0x7d90f0\"}]}]\n"},"seq":658}
1: (7994) ->1046^done,stack-args=[frame={level="0",args=[{name="argc",type="int",value="1"},{name="argv",type="char **",value="0x7d90f0"}]}]
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7994) ->(gdb)\n"},"seq":660}
1: (7994) ->(gdb)
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (7994) 1046: elapsed time 0\n"},"seq":662}
1: (7994) 1046: elapsed time 0
--> R (stackTrace-20): {"type":"response","request_seq":20,"success":true,"command":"stackTrace","body":{"stackFrames":[{"id":1000,"name":"main(int argc, char ** argv)","source":{"name":"main.cc","path":"/home/allen/桌面/test_cpp/main.cc","sources":[],"checksums":[]},"line":6,"column":1,"instructionPointerReference":"0x00007ff670e3155e"}],"totalFrames":1},"seq":664}
<-- C (scopes-21): {"command":"scopes","arguments":{"frameId":1000},"type":"request","seq":21}
--> R (scopes-21): {"type":"response","request_seq":21,"success":true,"command":"scopes","body":{"scopes":[{"presentationHint":"locals","name":"Locals","variablesReference":1000,"expensive":false},{"presentationHint":"registers","name":"Registers","variablesReference":1001,"expensive":true}]},"seq":667}
<-- C (variables-22): {"command":"variables","arguments":{"variablesReference":1000},"type":"request","seq":22}
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8416) <-1047-stack-list-variables --thread 1 --frame 0 0\n"},"seq":670}
1: (8416) <-1047-stack-list-variables --thread 1 --frame 0 0
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8417) ->1047^done,variables=[{name=\"argc\",arg=\"1\"},{name=\"argv\",arg=\"1\"},{name=\"a\"},{name=\"b\"}]\n"},"seq":672}
1: (8417) ->1047^done,variables=[{name="argc",arg="1"},{name="argv",arg="1"},{name="a"},{name="b"}]
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8417) ->(gdb)\n"},"seq":674}
1: (8417) ->(gdb)
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8417) 1047: elapsed time 1\n"},"seq":676}
1: (8417) 1047: elapsed time 1
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8417) <-1048-var-create --thread 1 --frame 0 - * \"argc\"\n"},"seq":678}
1: (8417) <-1048-var-create --thread 1 --frame 0 - * "argc"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8418) ->1048^done,name=\"var9\",numchild=\"0\",value=\"1\",type=\"int\",thread-id=\"1\",has_more=\"0\"\n"},"seq":680}
1: (8418) ->1048^done,name="var9",numchild="0",value="1",type="int",thread-id="1",has_more="0"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8418) ->(gdb)\n"},"seq":682}
1: (8418) ->(gdb)
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8419) 1048: elapsed time 1\n"},"seq":684}
1: (8419) 1048: elapsed time 1
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8419) <-1049-var-create --thread 1 --frame 0 - * \"argv\"\n"},"seq":686}
1: (8419) <-1049-var-create --thread 1 --frame 0 - * "argv"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8420) ->1049^done,name=\"var10\",numchild=\"1\",value=\"0x7d90f0\",type=\"char **\",thread-id=\"1\",has_more=\"0\"\n"},"seq":688}
1: (8420) ->1049^done,name="var10",numchild="1",value="0x7d90f0",type="char **",thread-id="1",has_more="0"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8420) ->(gdb)\n"},"seq":690}
1: (8420) ->(gdb)
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8420) 1049: elapsed time 0\n"},"seq":692}
1: (8420) 1049: elapsed time 0
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8420) <-1050-var-create --thread 1 --frame 0 - * \"a\"\n"},"seq":694}
1: (8420) <-1050-var-create --thread 1 --frame 0 - * "a"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8421) ->1050^done,name=\"var11\",numchild=\"0\",value=\"123\",type=\"int\",thread-id=\"1\",has_more=\"0\"\n"},"seq":696}
1: (8421) ->1050^done,name="var11",numchild="0",value="123",type="int",thread-id="1",has_more="0"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8421) ->(gdb)\n"},"seq":698}
1: (8421) ->(gdb)
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8421) 1050: elapsed time 1\n"},"seq":700}
1: (8421) 1050: elapsed time 1
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8421) <-1051-var-create --thread 1 --frame 0 - * \"b\"\n"},"seq":702}
1: (8421) <-1051-var-create --thread 1 --frame 0 - * "b"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8422) ->1051^done,name=\"var12\",numchild=\"0\",value=\"1893982384\",type=\"int\",thread-id=\"1\",has_more=\"0\"\n"},"seq":704}
1: (8422) ->1051^done,name="var12",numchild="0",value="1893982384",type="int",thread-id="1",has_more="0"
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8422) ->(gdb)\n"},"seq":706}
1: (8422) ->(gdb)
--> E (output): {"type":"event","event":"output","body":{"category":"console","output":"1: (8422) 1051: elapsed time 0\n"},"seq":708}
1: (8422) 1051: elapsed time 0
--> R (variables-22): {"type":"response","request_seq":22,"success":true,"command":"variables","body":{"variables":[{"name":"a","value":"123","type":"int","evaluateName":"a","variablesReference":0,"memoryReference":"0x000000000000007b"},{"name":"b","value":"1893982384","type":"int","evaluateName":"b","variablesReference":0,"memoryReference":"0x0000000070e3e0b0"},{"name":"argc","value":"1","type":"int","evaluateName":"argc","variablesReference":0,"memoryReference":"0x0000000000000001"},{"name":"argv","value":"0x7d90f0","type":"char **","evaluateName":"argv","variablesReference":1002,"memoryReference":"0x00000000007d90f0"}]},"seq":710}
Other Extensions
No response
Additional Information
No response
Hướng dẫn đóng góp
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Hướng nghiên cứu
Tái hiện vấn đề với chương trình C++ được cung cấp, đích từ xa Windows, GDB 16.3 và cấu hình khởi chạy được hiển thị. Bắt đầu bằng cách theo dõi cách lệnh -exec awatch a và phản hồi access-watchpoint-trigger được ghi nhật ký được xử lý, sau đó xác minh rằng việc thực hiện từng bước không còn tạo ra ngoại lệ không xác định đã được báo cáo.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- cpp, typescript, vscode
- Lĩnh vực
- devtools
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Cần làm rõ
- Mức phù hợp với người mới
- 30/100