每日HackerNews RSS

本文开启了一个从零构建Linux调试器的系列文章。目标是创建一个具有断点、寄存器/内存访问、单步执行、栈回溯和变量检查等功能的调试器。重点是C和C++调试,利用DWARF调试信息。 第一步是使用Linenoise(用于命令行输入)和libelfin(用于解析调试信息)来设置环境。待调试程序使用`fork/exec`模式启动。介绍了`ptrace`系统调用,它允许调试器控制和观察目标进程。 调试器类包含一个主循环,该循环使用Linenoise等待用户输入。实现了基本的命令处理,特别是“continue”命令,它使用`ptrace`恢复被调试程序的执行。`waitpid`函数对于调试器与被调试进程的同步至关重要,在启动或接收信号后暂停。

Hacker News 最新 | 往期 | 评论 | 提问 | 展示 | 招聘 | 提交 登录 编写一个Linux调试器(2017)(tartanllama.xyz) 17 分,作者 ibobev,12 小时前 | 隐藏 | 往期 | 收藏 | 2 条评论 Rochus 3小时前 | 下一条 [–] 感谢你的提示。作者还有一本750页的书,看了样章和目录后我立刻买了下来:https://nostarch.com/building-a-debugger 回复 D4ckard 10小时前 | 上一条 [–] 这是一系列很棒的文章,在我之前在这里看到它们时就激发了我编写调试器的灵感。非常有趣!这是另一个关于该主题的有见地的系列:https://eli.thegreenplace.net/2011/01/23/how-debuggers-work-... 回复 加入我们,参加6月16日至17日在旧金山举办的AI创业学校! 指南 | 常见问题 | 列表 | API | 安全 | 法律 | 申请YC | 联系我们 搜索:

Konstantin Derevtsov 开发的这款原生 Rust 调试器,专为 Linux x86-64 架构下的 Rust 程序提供全面的调试功能。它完全使用 Rust 编写,注重简洁性,同时提供强大的功能,包括断点、单步执行、信号和观察点处理以及对多线程应用程序的完全支持。 该调试器擅长运行时检查,可以使用数据查询表达式,并深度集成 Rust 类型系统,能够交互式地呈现复杂的数据结构,例如集合和智能指针,利用 `core::fmt::Debug` trait 进行渲染。 该调试器提供灵活的控制台和 TUI 模式,支持异步 Rust(包括 Tokio 运行时检查),并具有可扩展的架构和 Oracle 扩展机制。其内置的 Tokio Oracle 可以简化 Tokio 运行时分析,无需修改代码。 该项目采用 MIT 许可证,欢迎贡献建议、提问和功能实现。

Hacker News 展示:BugStalker——一款现代化的 Rust 调试器。这款用 Rust 编写的调试器面向 Linux x86-64 架构,其功能专门为 Rust 程序(特别是异步代码)而设计。主要特性包括异步回溯检查、任务细节查看、异步单步控制、增强的变量检查,以及用于执行函数的 `call` 命令和用于断点控制的 `trigger` 命令。 用户对此表示出极大的热情,尤其称赞其改善通常具有挑战性的 Rust 调试体验的潜力。功能需求主要集中在通过机器接口(例如 GDB/MI)与代码编辑器的集成以及 DAP 支持,以及支持用于嵌入式目标的 JTAG/SWD 调试探针。一位用户询问了 macOS 兼容性,开发者回应说这可行,但架构将是主要挑战。一些用户也对名称表示担忧,建议使用 BugStomper 作为替代名称。

Mitxela 构思了一个名为“Eurorack旋钮创意”的方案,它结合了Eurorack合成器上的旋钮和连接线,旨在减少模块设计中的妥协。这个概念使用一个嵌入小型磁铁的3.5mm TRS插头,与放置在插座下方的AS5600磁编码器相互作用。编码器将磁铁的旋转转换为电压信号,从而控制参数。 Mitxela 通过改装TRS插头和3D打印定制旋钮制作了原型。他设计了一个电路板来容纳插座下方的AS5600,并测试了其功能。虽然对原型感到满意,但他不确定其商业可行性,因为大规模实施需要大量投资。他建议了一个更简单的替代方案:带同轴TRS插座的电位器。 他设想了一个专注于此概念的小众群体(“Euroknobists”),但也承认保护产品不被廉价复制以及高昂的制造成本所带来的挑战。虽然他缺乏将这一想法付诸实施的创业动力,但他欢迎合作和资金支持,以实现这一创意。

Hacker News 的一个帖子讨论了一个“Eurorack旋钮”的创意——一个可以拔出用作补丁线,或者插入插孔以设置固定值的旋钮。其核心概念是节省 Eurorack 模块的空间。 评论者们讨论了现有的解决方案,例如与插孔相关的衰减器和偏移量,并指出衰减器-偏移组合是理想的,但会占用空间。一些人喜欢节省空间的想法,而另一些人则强调触觉界面的重要性,并避免通过功能进行“菜单潜水”。 讨论探讨了各种变化,包括衰减转换器、“衰减随机器”(Beads),以及结合额外的控制维度,例如可旋转的拇指杆。 一些人质疑其相对于现有解决方案的价值主张,强调高质量的触觉电位器相对便宜且可预测。关于用户是修补匠还是音乐家,也进行了简短的辩论。 一个讨论点涉及软件可配置旋钮电阻的潜力。有人考虑将其用于使钢琴键盘上的错误按键难以按下以进行训练,或修改现有钢琴的按键速度。

我在Substack上撰写技术文章时遇到一个令人困惑的问题:提及常见的Linux文件路径,例如`/etc/h*sts`,会触发“网络错误”并阻止自动保存。调查发现,Substack的API返回403 Forbidden响应,Cloudflare的头部信息表明是Web应用防火墙(WAF)拦截了请求。 WAF之所以标记这些路径,可能是因为它们与路径遍历和命令注入攻击相关,恶意攻击者试图访问敏感文件或执行命令。虽然其目的是为了安全,但这却妨碍了技术写作。 有趣的是,像`/etchosts`这样的变体可以正常工作,而且较旧的文章也包含被阻止的路径,这表明最近更新了过滤器。通用的“网络错误”提示信息毫无帮助,也没有任何记录的解决方法。Substack可以通过上下文过滤(识别代码块)、更清晰的错误信息以及针对合法技术讨论的已记录解决方法来改进这一点。这突出了安全性和可用性之间的微妙平衡,以及过于激进的过滤带来的意外后果。

Hacker News 的一个帖子讨论了在 Substack 编辑器中写入“/etc/hosts”会导致“网络错误”的问题,这很可能是由于过于激进的 Web 应用防火墙 (WAF) 规则造成的。评论者们就安全性和可用性之间的权衡展开了辩论,认为许多 WAF 规则配置不当,会阻止合法内容,例如技术讨论。一些人认为,保险公司和合规性要求推动了 WAF 和严格密码策略的采用,即使这些做法已经过时或无效。另一些人指出,过于宽泛的规则集会对用户体验产生负面影响,并且可能不会显著提高安全性。有人讨论 WAF 是否只是“安全剧场”。总的来说,普遍认为 WAF 的实现是一种笨拙的解决方案,优先考虑合规性而不是功能性和正确的代码清理。一位 Substack 员工证实这是一个由 CF 管理的 WAF 规则,并且已被禁用。

蒂娜热烈地相信热情具有改变世界的力量,她认为“粉丝”是一种专注于可能性和信念的心态。她将自己人生道路的塑造归功于许多关键人物,从她特立独行的胡吉阿姨到像马修·沃德曼和吉姆·库达尔这样的支持性导师。她的女儿艾拉激励她创办了自己的设计工作室,Mailchimp的本·切斯特nut成为了CreativeMornings至关重要的合作伙伴。露丝·安·哈尼施慷慨捐赠,帮助Creative Mornings 发展壮大。蒂娜强调,像她在Friends Work Here那样,让自己被充满热情、积极进取的人包围,能带来创新和勇气。她创立Creative Mornings是为了对抗疏离感,培养以人为本的社群。蒂娜呼吁人们拥抱乐观,相信他人,并通过成为“粉丝”——那些敞开心扉,用热情改变世界的人——积极为创造更美好的未来做出贡献。

Hacker News 上的一个帖子讨论了一篇赞扬相信他人并支持可能性的人的文章。评论者们就做“粉丝”和做“批评者”的优劣进行了辩论。一些人认为热情至关重要且具有感染力,而另一些人则认为批判性思维对于改进和防止盲目接受同样重要。该帖子强调,由真正希望某事成功而驱动的建设性批评是有价值的。相反,犬儒主义被视为具有破坏性。几位评论者分享了他们拥有支持性导师或看到粉丝行为变得有害的个人经历。文章还讨论了现代社会是否过分重视积极思考,而牺牲了诚实的评价。总的来说,该帖子探讨了鼓励和批判性分析之间的平衡,强调了健康环境中两者兼具的必要性。

Logiquiz,也称自我指涉测验,是一种独特的谜题,其问题与测验本身或测验中的其他问题相关。正确答案通常取决于测验的整体结构、内容或内部关系。 游戏方法:点击一个答案一次将其标记为错误,点击两次将其标记为正确(每题只有一个正确答案)。绿色条表示逻辑上正确的答案,红色条表示错误的答案。 策略包括:首先浏览所有问题,排除明显错误的选择,解决那些可能为其他问题提供线索的简单问题。追踪可能的答案并在获得新信息时重新审视它们。根据需要调整你的答案。 解开Logiquiz需要逻辑和推理能力,考虑每个答案如何影响其他答案。当所有问题都逻辑上正确(绿色条)时,游戏结束。

Logiquiz,一款受 James Propp 能力测试启发的每日自指谜题游戏,已在 Hacker News 上发布。这款游戏(网址:logiquiz.com)每天提供五道难度不同的测试题,界面会根据已有的输入检查答案。 用户反馈指出了一些问题:无意间的刷新会删除进度;措辞模糊(例如“has the answer E”);颜色编码混乱,绿色错误地暗示了整体正确性。建议包括添加“答案锁定”功能以及撤销/重做按钮,使用更清晰的措辞,例如“哪个问题的答案是 E?”,并用黄色表示可能的但并非最终正确的答案。 开发者 slig 解决了下拉刷新故障和措辞问题,并对建议表示感谢,尤其感谢关于颜色编码和英语表达的建议。另一位用户指出,AI 模型可以解决最初的问题。同时也发现并迅速修复了其中一道题目的一个错误。

一份请愿书正在流传,呼吁开放源代码促进会(OSI)公布其2025年董事会选举的完整、未经修改的结果。该请愿书声称,OSI在投票结束后将三位候选人(Bentley Hensel、Bradley Kuhn和Richard Fontana)的选票排除在外,损害了其信誉。Kuhn和Fontana的竞选纲领对OSI新的开源人工智能定义(OSAID)和董事会成员协议提出了批评。 请愿书称,OSI在投票结束后不久引入了一项新的要求,即候选人必须签署董事会成员协议,这使得未遵守的候选人被取消资格。请愿书认为,在选举过程中更改规则并压制计票结果破坏了选举的完整性。签署者认为,透明度对于恢复信任和解决潜在利益冲突至关重要。请愿书要求OSI公布完整的、未经修改的选举结果,并以可信的方式重新承诺社区参与,以修复失去的信任。

Hacker News 的一个帖子讨论了一份请愿书,该请愿书敦促开放源代码促进会 (OSI) 公布 2025 年大选的完整结果,同时还讨论了 OSI 的开放源代码人工智能定义 (OSAID)。一些人,例如 tedivm,批评 OSAID 允许封闭组件,特别是隐瞒训练数据,这阻碍了模型分析和可重复性。另一些人则为 OSI 的方法辩护,认为即使没有完全的可重建性,它也提供了自由,类似于传统软件中智力才能的作用。 讨论还质疑了 OSI 的作用和影响力。一些人声称 OSI 拥有“开放源代码”商标并强制执行其定义,而另一些人则指出 OSI 被拒绝了该商标,只拥有“开放源代码促进会”商标。一些人批评他们对企业友好,冲淡了自由软件运动的伦理道德,而另一些人则为他们在许可证审查和使自由软件更容易被企业接受方面所做的工作进行了辩护。该帖子突出了企业利益与开放源代码和自由软件最初理想之间的紧张关系。

访问被拒绝。这可能是意外,您可以联系我们 <[email protected]> 并提供您的IP地址以申请访问。

GCC 15.1 对联合体初始化做出了改变,这引发了担忧。在 C 和 C++ 中,使用 `{0}` 初始化联合体过去会保证整个联合体,包括填充位,都被清零。现在,它只初始化第一个成员,这可能会破坏依赖于旧行为的现有代码,尤其是在类型穿透的情况下。 令人困惑的是,GCC 在 Clang 采用 GCC 旧行为的同时,采用了 Clang 旧的行为用于联合体初始化。这意味着现在 GCC 和 Clang 的行为与它们之前的版本相反。 这一改变可能会默默地破坏大量现有代码,这并不理想。一些人认为使用联合体进行类型穿透本身就是未定义行为,而其他 C 标准委员会成员则认为这是不正确的。另一些人建议默认零初始化会更有益,可以防止意外的未初始化行为。最近的讨论强调了在这种情况下未定义行为与未指定行为之间的争论。

GCC 15预计将于2025年4月/5月发布,带来了许多C++前端增强功能。虽然C++20/23/26特性仍在实验阶段,但GCC 15已经实现了几个C++26特性,例如包索引、结构化绑定的属性以及带原因消息的`=delete`。可变参数友元和constexpr placement new也得到了支持。 结构化绑定现在允许在条件语句中使用。GCC 15加强了对删除指向不完整类型的指针的限制,并警告了Oxford可变参数逗号和已弃用的数组比较。用于包含二进制数据的`#embed`指令也可用。 几个缺陷报告已被解决,提高了标准的遵从性。增强功能包括基于范围的for循环的生命周期扩展修复以及更早地诊断限定查找失败。Concepts TS已被移除,替换为C++20 Concepts。模块支持得到了极大的改进。GCC 15还包含新的警告选项,例如`-Wtemplate-body`、`-Wself-move`、`-Wdefaulted-function-deleted`和`-Wheader-guard`,以增强代码分析。

Hacker News 的一个帖子讨论了 GCC 15 中新的 C++ 特性。一个关键点是 GCC 改进了对 C++20 中基于范围的 for 循环的处理,这可能会延长临时对象的生存期。虽然看似有帮助,但这项修复可能会导致可移植性问题,因为在 GCC 15 中工作的代码可能会在其他 C++20 编译器上由于不同的生命周期管理而中断。评论者对持续存在的编译器可移植性问题表示遗憾,尽管编译器生态系统正在缩小。GCC 新的模块支持(与 clang 和 MSVC 保持一致)受到了好评。`#embed` 特性也因简化安装程序创建、降低开发者门槛而受到关注,尽管 Windows 注册表管理仍然需要手动处理。对基于范围的 for 循环中未定义行为 (UB) 的修复也受到了好评。

国防部长皮特·希格塞斯因在其五角大楼办公室使用不安全的互联网连接(一条“脏线”)访问Signal通讯应用而受到审查。此连接绕过了五角大楼的标准安全协议,可能使敏感的国防信息面临黑客攻击或监控的风险。 希格塞斯据称使用Signal与包括家人和国家安全官员在内的群体分享了也门军事空袭的细节,这引发了对其处理机密信息的担忧。尽管五角大楼发言人表示希格塞斯不在他的政府电脑上使用Signal,但这“脏线”的存在仍然引发了质疑。 五角大楼拥有NIPRNet、SIPRNet和JWICS等安全通信渠道,用于不同级别的机密信息。由于间谍活动的漏洞,在关键办公室使用个人设备(包括手机)受到限制。Signal虽然是加密的,但未被授权用于敏感数据,并且可能被黑客攻击,使得官员的通信成为俄罗斯和中国等对手的目标。希格塞斯的Signal使用行为目前正在接受调查。

Hacker News 上的一个帖子讨论了一篇文章,该文章声称国防部长赫格塞思在他的办公室安装了一条不安全的互联网线路来使用Signal,一款安全的通讯应用。 一位自称在国防部通信部门工作的用户反驳说,这条线路是经过备案和批准的“不可追溯”线路,而不是文章中所说的“脏”线路,并且用于合法目的。这位用户还惊讶地表示赫格塞思居然使用电脑,因为许多国防部长都会将沟通工作委托给工作人员。 其他用户则就安全隐患、使用Signal进行官方沟通的合法性以及赫格塞思的任职资格展开了辩论。一些人认为赫格塞思绕过了安全协议,造成了国家安全风险,而另一些人则为他辩护,质疑是否真的有任何机密信息被泄露。讨论还涉及到特朗普政府对政府雇员和现有IT基础设施的信任度问题,导致使用了替代的沟通方法。总的来说,这个帖子突出了人们对安全协议、问责制以及政治动机可能影响政府运作的担忧。

更多

联系我们 contact @ memedata.com