How devtools map minified JS code back to your TypeScript source code6 months agohttps://www.polarsignals.com/blog/posts/2025/11/04/javascript-source-maps-intern...Source map将压缩后的JavaScript代码映射回原始源代码以便调试Source map通过三个主要阶段工作:转译、打包和压缩Source map采用JSON格式,包含version、file、sources和mappings等关键字段mappings字段使用VLQ编码高效压缩位置信息VLQ编码通过Base64字符和差值来紧凑表示数字Source map使开发者工具能够显示原始源代码和变量名
Vibe Code Warning – A personal casestudy6 months agohttps://github.com/jackdoe/pico2-swd-riscv使用树莓派Pico2的GPIO实现RP2350 RISC-V内核调试的有状态SWD协议80%代码采用'氛围编码'完成,其余由Claude AI生成,作者对此过程心情复杂项目需配合示波器与文档完成SBA/读写操作的原型开发代码库从约1000行扩展到4000行,导致系统心智模型难以维护作者对AI生成代码表示沮丧,指出其缺乏逻辑依据且代码可信度存疑该库为RP2350的RISC-V调试模块提供三层SWD协议通信抽象详解RISC-V硬件线程状态(运行/暂停/恢复)及调试模块的控制机制阐述通过抽象命令访问硬件线程寄存器及调试模式下执行指令的程序缓冲区系统总线访问(SBA)实现非侵入式内存操作,但存在一致性风险SWD协议细节:请求/应答/数据阶段及PIO精确时序控制休眠状态与激活序列确保SWD连接不受初始状态影响调试访问端口(DAP)实现方案,含DP/AP寄存器访问与上电序列RP2350专用初始化序列及RISC-V调试模块寄存器映射通过DMCONTROL寄存器控制硬件线程的暂停/恢复/复位操作单步执行与软件指令追踪功能支持双RISC-V硬件线程的独立控制与状态跟踪全面的错误报告与状态跟踪机制优化SWD事务应用场景示例:暂停线程/读取寄存器/执行代码等当前局限:缺少硬件断点/多目标SWD支持/闪存编程例程作者反思AI辅助编程的双刃剑效应:效率提升伴随代码所有权与理解度的丧失
Debugging containers that have no shell6 months agohttps://docs.docker.com/reference/cli/docker/debugDocker Debug 是一个CLI命令,允许用户获取任何容器或镜像的shell访问权限,即使目标没有内置shell它通过保持镜像小巧安全的同时提供调试能力,帮助用户遵循最佳实践Docker Debug自带工具箱,包含vim、nano、htop、curl等标准Linux工具,可通过`install`命令自定义工具集默认支持多种shell(bash、fish、zsh)并自动检测用户使用的shell类型调试shell中的修改不会影响原始镜像或容器(运行中/暂停状态的容器除外,其文件系统变更可见)典型应用场景包括:调试`hello-world`等精简容器、修改运行中容器的文件、使用`entrypoint`工具分析容器启动命令`--command`选项支持直接运行命令而无需交互式会话,适用于脚本场景通过`--host`选项可实现远程调试,连接至远端Docker实例
Box of bugs (exploded): Perils of cross-platform development6 months agohttps://pvs-studio.com/en/blog/posts/cpp/1304/86Box v5.0版本的发布时间恰逢Windows 95发布30周年纪念在86Box模拟器中发现了一个涉及'fseek'函数空指针解引用的漏洞该问题是在模拟配备ATI 8514/A 2D加速器的IBM PS/2 model 55SX时发现的不同C标准库(glibc/BSD libc/UCRT/musl)对'fseek'中空指针的处理方式存在差异通过移除有问题的'fseek'调用修复该漏洞,解决了FreeBSD系统崩溃问题静态分析工具如PVS-Studio可帮助早期发现此类问题该修复已包含在86Box v5.1版本中
The Lazarus team is glad to announce Lazarus FreePascal IDE 4.46 months agohttps://forum.lazarus.freepascal.org/index.php?topic=72707.0已安装32位版本的Lazarus 4.4应用程序在LazTracer.pas文件中因除零错误崩溃更新期间移动带有RichMemos的TPairSplitter时出现错误在64位Lazarus 4.2中观察到相同崩溃,但control.inc文件中的错误不同与EnableAutoSizing错误不同,除零错误导致应用程序无法恢复运行
Finding a CPU Design Bug in the Xbox 3606 months agohttps://randomascii.wordpress.com/2018/01/07/finding-a-cpu-design-bug-in-the-xbo...作者在Xbox 360 CPU中发现了一个与xdcbt指令相关的设计缺陷,该指令会绕过L2缓存,导致内存一致性问题。当堆损坏发生时,由于核心间内存视图不一致,该缺陷会导致崩溃,而分支预测器的推测执行加剧了这一问题。xdcbt指令被认为使用风险过高,因为推测执行可能不可预测地触发该指令,使得无法保证安全使用。该问题与Meltdown和Spectre漏洞有相似之处,凸显了CPU设计中推测执行的风险。调试过程涉及用断点替换xdcbt指令,证明推测执行是崩溃的根本原因。作者反思了此类缺陷的更广泛影响,将其与系统设计中的逻辑矛盾及实验哲学联系起来。
Why Castrol Honda Superbike crashes on (most) modern systems6 months agohttps://seri.tools/blog/castrol-honda-superbike/《嘉实多本田超级摩托车世界冠军》是1998年推出的PC平台摩托车竞速游戏该游戏在Windows7等现代系统上会因DirectInput设备枚举问题崩溃调试发现当枚举超过8个输入设备(包括LED控制器等非摇杆设备)时游戏会崩溃解决方案是通过补丁使游戏仅筛选摇杆设备并将枚举数量限制为8个开发了最小化的DLL垫片来实现修复,兼顾文件体积优化与旧版Windows兼容性游戏还包含光盘检测机制,可通过复制特定文件到安装目录绕过验证
Craft Chrome Devtools Protocol (CDP) commands with the new command editor6 months agohttps://developer.chrome.com/blog/cdp-command-editorChrome DevTools协议(CDP)是用于Chrome浏览器的远程调试APICDP支持浏览器检查、行为控制和调试信息收集新版CDP编辑器通过自动补全和参数自动填充简化命令输入功能包括可轻松编辑基本类型、枚举、布尔值、数组和对象参数实时错误检查可防止提交错误参数命令支持编辑、重新发送和以JSON格式复制工具提示提供命令和参数说明,并附带文档链接Chrome Canary等预览渠道可提前体验新DevTools功能可通过crbug.com、Twitter或YouTube评论区提交反馈
Show HN: I build a strace clone for macOS6 months agohttps://github.com/Mic92/strace-macos一个使用LLDB调试器API的macOS系统调用追踪工具。与dtruss不同,支持在启用SIP(系统完整性保护)的情况下运行。纯Python实现,无需内核扩展或编译组件。支持多种输出格式:JSON Lines和兼容strace的文本输出。支持按名称或类别筛选系统调用。自动解码标志位、错误码和结构体字段。包含语法高亮的彩色输出功能。提供耗时/调用次数/错误计数等统计摘要。要求macOS 12+系统、Apple Silicon(ARM64)或Intel(x86_64)芯片,并安装Xcode命令行工具。必须使用macOS系统自带的Python以支持LLDB绑定。支持基础用法、输出到文件、JSON格式输出及系统调用过滤。当前状态:测试版,核心功能已完备,部分特性开发中。采用MIT开源协议,欢迎贡献代码。
Godbolt's Rule6 months agohttps://corecursive.com/godbolt-rule-matt-godbolt/技术中的抽象概念,如网络请求或内存管理,是一种简化手段,但有时会误导甚至失效。数据库设计常聚焦于优化磁盘I/O以提升性能同时保证数据安全,这高度依赖磁盘技术特性。现代固态硬盘和机械硬盘提供的接口实则是抽象层,与底层物理操作并不一致,易导致认知偏差。AWS RDS将磁盘操作抽象为网络请求,掩盖了数据库写入本质是网络操作这一复杂性。系统调试与优化需要穿透抽象层理解底层机制,这在游戏开发和硬件交互中尤为明显。Matt Godbolt倡导的探究精神强调理解底层实现,最终催生了能揭示编译器运作的Compiler Explorer工具。游戏开发案例揭示了硬件级优化的重要性,例如利用颜色寄存器调试Dreamcast问题的经典案例。理解比当前抽象层更深一层的原理,是解决复杂问题的关键法则,这一原则适用于软件工程及其他领域。
What this blog is about6 months agohttps://randomascii.wordpress.com/2025/03/25/what-this-blog-is-about/作者难以将技术博客内容转化为非技术读者能理解的摘要博客包含人文故事、趣味帖子和科技调查报道重点报道了一个因桌面图标重排导致系统卡顿的Windows漏洞,该问题已在Win11中修复发现并修复了影响Chrome/Gmail性能的Windows系统缺陷,为用户节省内存诊断出影响Chrome构建系统的罕见Windows内核漏洞,提升了全球范围内的系统可靠性解决了高端配置电脑在Chrome编译过程中出现鼠标卡顿的Windows性能问题最受欢迎文章:计算机数字精确比较指南,阅读量超40万次
AI has a deep understanding of how this code works6 months agohttps://github.com/ocaml/ocaml/pull/14369OCaml本地编译器新增DWARF v5调试信息支持,可在GDB和LLDB中进行源码级调试。核心DWARF支持包含遵循DWARF 4/5规范的函数、类型和行号调试信息。平台支持覆盖macOS(Mach-O)和Linux(ELF),提供AMD64和ARM64架构的特定实现。工具链包含LLDB Python扩展,支持OCaml值的美化打印和增强调试命令。命令行接口新增-g标志用于生成DWARF,并提供控制调试信息详细程度的选项。实现包含通过编译管道的变量追踪,以及对let绑定变量的正确作用域处理。全面测试验证了调试器功能,包括断点、源码定位和变量检查等场景。该PR包含13k行代码,但由于采用AI辅助开发方式面临集成挑战。讨论凸显了AI生成贡献与传统开源协作模式之间的张力。
A Tale of Two AI Failures: Debugging a Simple Bug with LLMs6 months agohttps://bitmovin.com/blog/hackathon-debugging-ai-tools-llms/Bitmovin黑客马拉松项目聚焦于利用AI编程助手整合太阳能发电数据API两款AI工具Cursor和Claude在API集成中未能处理特定字符串格式化错误该错误涉及将换行符作为字面量而非运算符拼接请求参数Cursor的失败是静默且逻辑性的,陷入错误修复的循环Claude的失败更为戏剧性,幻觉式地虚构出系统级问题(错误时间戳)两者均因对非标准API需求的共同盲区而无法解决问题关键结论:AI擅长模式匹配,但在上下文复杂、非标准的编码任务中表现欠佳人类调试在解决微妙精确的问题上仍具优势
Help, My Java Object Vanished (and the GC Is Not at Fault)6 months agohttps://arraying.de/posts/markword/作为HotSpot Java虚拟机开发者的作者,在测试与Project Valhalla相关的新功能时遇到了Java对象和类莫名消失的问题。Project Valhalla引入了值对象(通过字段区分的对象),支持堆扁平化和标量替换等优化。该问题的根源在于为符合JEP 450(紧凑对象头)规范而对markWord格式的修改,这重组了对象头中的元数据位。该缺陷表现为大规模间歇性测试失败,包括不应为null的对象变为null以及NoClassDefFoundErrors错误,主要发生在未启用紧凑对象头时使用C2 JIT编译器的情况下。调试过程最终锁定问题源于Object::hashCode内部函数中的错误编译,由检查本地指针位而非元数据位的错误位掩码导致。根本原因是内存对齐问题——当值对象位因本地内存对齐发生位移后,错误的位掩码才显现出来。解决方案是修正位掩码使其仅检查锁定位,从而消除对象变null和类定义丢失的现象。关键收获包括:调试方法论的重要性、提出正确问题的技巧,以及高效利用调试工具的能力。
Durin is a library for reading and writing the Dwarf debugging format6 months agohttps://github.com/tmcgilchrist/durinDurin是一个用于读写Dwarf调试格式的库。支持从ELF和MachO目标文件中读写DWARF 5编码信息。未来将支持DWARF 4或更新版本。具有跨平台和惰性解析能力。可通过'opam install durin'命令安装。包含文档、示例程序及多种解析器/克隆工具。提供dwprod和dwarf-validate等实用工具。支持Apple紧凑展开格式和GCC厂商扩展功能。
Show HN: TapeHead – A CLI tool for stateful random access of file streams5 months agohttps://github.com/emamoah/tapeheadTapeHead是一个用于文件流随机访问的命令行工具它运行一个REPL会话,支持在文件中执行读取、写入和定位等命令适用于调试驱动程序或涉及文件流的任务可通过cargo安装:`cargo install --git https://github.com/emamoah/tapehead.git`最初为调试scull驱动程序创建,后经重写并发布因'seeker'名称被占用,故命名为'TapeHead'(磁带头)文件详情包括路径、大小和权限(读写/只读/只写)提示符显示当前位置、读写字节数,支持read/write/seek/help/quit等命令定位语法支持当前位置(.)、绝对/相对位置及文件末尾引用示例包含在特定位置或偏移量进行读写操作
Show HN: Cdecl-dump - represent C declarations visually5 months agohttps://github.com/bbu/cdecl-dump使用`./cdecl-dump`命令在命令行可视化转储C语言声明,包含多种示例。使用`./build.sh`构建程序,生成带有额外解析阶段跟踪的调试版本。使用`DEBUG=0 ./build.sh`生成优化后的可执行文件。该程序存在一些限制:不会严格验证声明符,允许函数返回数组,也允许数组包含函数作为元素。仅支持内置类型,不接受`size_t`或`uint64_t`等类型。该程序采用手工编写的表驱动词法分析器和解析器。
Show HN: I wrote a book – Debugging TypeScript Applications (in beta)5 months agohttps://pragprog.com/titles/aodjs/debugging-typescript-applications/新代码成本降低,但维护依然昂贵且充满挑战错误出现更快、更隐蔽且难以捕捉,调试工作日益困难本书教授浏览器开发者控制台的冷门功能与优化编码实践,减少调试需求专注于通过掌握调试技能构建卓越的Web应用涵盖堆栈跟踪解读、风险代码封装、问题分级、根因分析及优雅失败系统设计探索通过回调和Promise追踪数据流,实现智能错误监控更高效地使用熟悉的Chrome开发者工具从方法论和软件设计原则切入,逐步展开日志记录、交互式调试等实用技巧最终通过监控与可调试性提升质量标准提供PDF/epub/mobi格式,售价26.95美元测试版现已发布,正式版预计2025年7月上市
Qt, Linux and everything: Debugging Qt WebAssembly5 months agohttp://qtandeverything.blogspot.com/2025/12/debugging-qt-webassembly-dwarf.htmlQt WebAssembly调试最简便的方式是通过配置-g参数或CMAKE_BUILD_TYPE=Debug实现Emscripten会将DWARF调试符号嵌入wasm二进制文件,但DWARF调试目前仅限Chrome浏览器配合特定扩展使用对于Safari/Firefox等浏览器或无法使用扩展的场景,需要依赖source maps进行调试DWARF调试需在浏览器开发者工具设置中启用,但无需创建源码目录符号链接Emscripten自动为-g编译的二进制嵌入DWARF符号,因此只需以调试模式重新构建Qt或应用即可Qt默认调试构建使用-g2优化级别,如需完整调试符号需指定-g或-g3参数DWARF调试支持类似桌面应用的代码逐行调试体验
Show HN: Wirebrowser – A JavaScript debugger with breakpoint-driven heap search5 months agohttps://github.com/fcavallarin/wirebrowserWirebrowser 是一个基于 Chrome DevTools 协议 (CDP) 的调试工具包。功能包括断点驱动的堆搜索和实时对象搜索,用于客户端分析。允许拦截、阻塞、重写和重放 HTTP 请求和响应。支持通过实时堆分析和堆快照进行 JavaScript 内存检查。实时对象搜索功能支持在运行时修补 JavaScript 对象。静态堆快照搜索可捕获 V8 堆快照中的不可达值。起源追踪 (BDHS) 可识别导致对象变动的用户态函数。包含基于形状搜索和聚类的共享相似性引擎。支持通过 Postman 风格的工作流创建和执行 API 请求。提供自动化脚本功能,支持浏览器端或 Node.js 脚本及事件触发。内置字符串编解码工具和 JSON Web 令牌 (JWT) 处理功能。支持全局或标签页特定的调试操作,灵活性高。采用 React 和 Node.js 构建,未来可能集成 TypeScript。未来开发可能包括单页应用爬取和 DOM XSS 扫描功能。基于 MIT 许可证开源,欢迎贡献代码。