我有一个独特的情况,我们创建了一个(由于缺乏更好的术语)“micro-ui”作为 React 组件。UI 接收 props,因此它可以动态配置自身以在我们的几个较大的应用程序中工作。由于它在多个应用程序中使用的性质,我们决定将其作为导出单个组件的组件库进行分发。它的实现效果非常好,但是调试变得有点困难/不存在。
目前,我们正在npm link本地开发依赖应用程序,同时在主机应用程序中运行它。这很有效,但我们在源映射和捕获断点方面遇到了一些问题。我们已经使用一些 Webpack 配置解决了源映射问题,但断点仍然无法在链接的依赖项应用程序中捕获。当前,调试器附加到正在运行的主机应用程序,并且依赖项应用程序只是作为本地依赖项链接。在理想的情况下,我将能够找到一种解决方案,允许我在主机应用程序或依赖项应用程序中放置断点,并且它会在调试器中捕获。
我目前的尝试是直接在 vscode 中调试,我想我已经差不多了。到目前为止,我已经尝试了 launch.json 文件的多个版本,并最终选定了一个在附加主机应用程序时效果非常好的版本(如下所示)。
正如您所看到的,我尝试将映射添加到 sourceMapOverrides 键,以查看是否可以将node_modules依赖项的文件夹显式指向依赖项项目根目录中的构建文件夹。我已经尝试了几种不同的方法来进行此映射,但它没有捕获链接应用程序中的断点。此外,没有抛出明显的错误,因此我无法判断我的配置是否无效。我确信我错过了一些明显的东西,但经过一整天的搜索,我似乎找不到一个好的解决方案。
预先感谢大家的时间和帮助,如果您需要更多信息,请告诉我。
{
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome against localhost",
"url": "http://localhost:3000",
"webRoot": "${workspaceFolder}",
"runtimeArgs": ["--preserve-symlinks"],
"sourceMapPathOverrides": {
"${webRoot}/node_modules/<dependency_project>/build": "/Users/<USER>/<path_to_dependency_project>/build",
}
}
]
}
Run Code Online (Sandbox Code Playgroud) debugging reactjs visual-studio-code vscode-debugger chrome-debugging
我正在 Visual Studio Code 中开发 Vue.js Web 应用程序 (Vue 2) 并使用 chrome 调试器扩展。我在几个月前按照这篇文章的建议设置了这个: visual-studio-code-breakpoint-appearing-in-wrong-place
一切都工作得很好,直到几天前推送了最新的 VS Code 更新(版本:1.47.0)。现在调试点出现在代码中的错误位置,就像之前链接的帖子一样。
在下面的示例 gif 中,调试器永远不会在我实际单击的断点处停止。断点跳转到第 40 行,这是调试时唯一实际中断的点。调试器永远不会停在第 142、147、150 行……只会停在第 40 行(我从未设置过)。
以下是.vscode/launch.json过去几个月一直有效的配置:
{
"version": "0.2.0",
"configurations": [
{
"type": "chrome",
"request": "launch",
"name": "vuejs: chrome",
"url": "http://localhost:8080",
"webRoot": "${workspaceFolder}/src",
"breakOnLoad": true,
"sourceMapPathOverrides": {
"webpack:///src/*": "${webRoot}/*",
"webpack:///./src/*": "${webRoot}/*",
"webpack:///./*": "${webRoot}/*",
"webpack:///*": "*",
"webpack:///./~/*": "${webRoot}/node_modules/*",
}
}
]
}
Run Code Online (Sandbox Code Playgroud)
我想知道我的工作流程中的某些内容(例如切换 git 分支)是否是造成问题的原因,但事实似乎并非如此。我已经在同一个 git 分支上工作了一周,无法在多个 .vue 文件中设置断点。
我目前正在调试 Vue/Electron 应用程序。该应用程序加载一个没有组件的页面,我想调试稍后加载的组件。我注意到在初始加载之前设置的断点不起作用。但是,如果我在加载该组件后在该组件中设置断点,它似乎可以工作。 …
它曾经有效,我认为是因为 vscode 1.47.1,升级到 1.47.2 或降级到 1.46.1,同样的事情。Java 扩展和 java 调试扩展都是最新版本。
HCR 设置为自动。自动构建已启用。
尝试将 HCR 转为手动,总是得到:
找不到任何已更改的类进行热替换!
有什么建议为什么这已停止工作吗?我使用的是jdk 1.8,也尝试过java 11,同样的问题。
还想提一下,如果我更改私有方法的签名,它不会给我任何警告。它曾经告诉我代码替换失败,并询问我是否要重新启动项目。
谢谢!
从相关讨论中我得到了以下答案:
另外,在代码中需要仔细检查的是主入口点是否受到
__name__=='__main__'检查保护:Run Code Online (Sandbox Code Playgroud)if __name__ == '__main__': main()根据结构,
multiprocessing.freeze_support()如果您需要多处理支持,您可能还需要:IE:
Run Code Online (Sandbox Code Playgroud)if __name__ == '__main__': multiprocessing.freeze_support() main()(如果您没有该结构,它可以解释为什么多处理多次执行您的主入口点代码)。
然而,我既没有实现上述第一个选项,也没有实现第二个选项,而且,我执行的任何脚本都可能发生这种突然的多线程行为。似乎旧的/以前的调试会话并没有在幕后真正终止,因为在一个会话中没有多线程,然后在调试时启动多会话。正常执行代码时也会发生这种情况,代码退出时出现错误,然后我(再次)进入调试会话。
我不知道如何实现它,但我应该把
if __name__ == '__main__':
multiprocessing.freeze_support()
main()
Run Code Online (Sandbox Code Playgroud)
在我作为主脚本执行的所有 python 脚本的开头,即我的入口点或顶级脚本?
从所附的屏幕截图中可以看出,在通过按下执行标准调试过程(之前定义了一些断点)时,偶尔会发生以下情况:F5VS Code
这会导致大量额外的计算时间、滞后和冗余的控制台输出,因为相同的代码连续执行多次。
奇怪的是,这种行为似乎是随机发生的。只有有时我才能得出结论,我之前尝试启动调试会话,该会话在代码中的某个时刻被 中断,但对我来说,为什么要重新启动所有这些以前失败的调试会话以及新的调试会话,Uncaught Exception这似乎不合逻辑VS Code按下时为一F5。
Shift+F5当通过或 红色方形按钮中断调试程序时,有时会在 - 窗口右下角出现Stop该消息;特别是当问题发生时,显示.timeout after 1000 msVS Codecall stack
launch.json定义集成终端调试的my - 文件的相关部分是:
{
// !!THIS CONFIG-FILE …Run Code Online (Sandbox Code Playgroud) python debugging multithreading visual-studio-code vscode-debugger
#include <string.h>
#include <stdlib.h>
int main(void)
{
char *p0 = strdup("red..");
char *p1 = strdup("green");
char *p2 = strdup("blue.");
char *p3 = NULL;
char **pp = malloc(sizeof(char *) * 4); /* I want to watch this in VSCode debugger */
pp[0] = p0;
pp[1] = p1;
pp[2] = p2;
pp[3] = p3;
/* do something */
return (0);
}
Run Code Online (Sandbox Code Playgroud)
在 VSCode 调试器的监视视图中,如何让它显示每个指针指向的字符串的 char 值(如果可能的话还包括地址),如下所示?
<watch_expression_for_pp>: <address of pp>
|- pp[0]: [6] <address of pp[0]> …Run Code Online (Sandbox Code Playgroud) 我正在使用 vscode-jest 和“调试”代码镜头来运行单独的测试。然而,当运行这样的测试时,它每次都会生成一个新的终端。如何通过修改 launch.json 文件中的启动配置来防止这种情况?
作为参考,这是我的 launch.json:
{
"version": "0.2.0",
"configurations": [
{
"type": "node",
"name": "vscode-jest-tests",
"request": "launch",
"args": [
"--runInBand"
],
"cwd": "${workspaceFolder}/data-utils/",
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen",
"disableOptimisticBPs": true,
"program": "${workspaceFolder}/data-utils/node_modules/jest/bin/jest"
}
]
}
Run Code Online (Sandbox Code Playgroud) 当尝试在 vscode 中调试时,vscode 会生成launch.json配置文件。当我尝试调试时,它首先尝试编译源代码,然后调试 exe。我只想调试已编译的可执行文件(使用gcc -g选项编译)。
json 文件是:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "gcc-10 - Build and debug active file",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}",
"args": [
"-pthread",
"common.c"
],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": …Run Code Online (Sandbox Code Playgroud) 我有一个带有 2 个模块(包)的 Lerna monorepo:ps和cli.
ps只是导出一个导入whatever的函数cli。
然而,当我尝试使用 VSCode 调试此代码时,我的断点停止在生成的 Javascript 文件上,而不是我的源 Typescript 文件上。
这已经困扰了我几个小时,我已经广泛地使用了我的tsconfig.json和launch.json使用vscode-pwa-analyzer来查看 VSCode 能够检测我的源 TS 代码,但我无法找到修复方法。
编辑:我使用以下设置: macOS Big Sur v11.1 Node.js v14.8.0 Typescript v4.1.3
这是我上面的调试的转储文件,您可以加载到vscode-pwa-analyzer。
我可以在这里看到一些未绑定断点错误。
javascript source-maps typescript visual-studio-code vscode-debugger
刚刚开始使用 FastAPI,但在尝试让它识别 VSCode 调试器中的断点时遇到了问题。奇怪的是,它确实成功地打破了路线中未包含的线路
直接从教程中提取: https: //fastapi.tiangolo.com/tutorial/debugging/
import uvicorn
from fastapi import FastAPI
app = FastAPI() # breakpoint here works on launching file
print('here') # breakpoint here works on launching file
@app.get("/")
def root():
a = "a" # breakpoint here does NOT work
b = "b" + a
return {"hello world": b} # returns data successfully
if __name__ == "__main__":
uvicorn.run(app, host="0.0.0.0", port=5002)
Run Code Online (Sandbox Code Playgroud)
如上所述,路由外的线路工作正常,当我转到该地址时,我成功获取数据,但路由内的断点不会触发。不知道我在这里缺少什么。尝试过VSCode 中的 Debug FastAPI 应用程序的各种解决方案
我不确定这是否会产生影响,但这也是通过 VSCode 上的远程 SSH 扩展运行的(我的代码位于 gcloud 虚拟机上)。也许这有所贡献,但同样,其他断点也可以正常触发。
我的启动.json:
{
// Use …Run Code Online (Sandbox Code Playgroud) vscode-debugger ×10
debugging ×4
python ×3
c ×2
eclipse-jdt ×1
fastapi ×1
javascript ×1
jestjs ×1
json ×1
reactjs ×1
source-maps ×1
typescript ×1
virtualenv ×1
vue.js ×1