gdb - 在调试时传递一个尖括号作为命令行参数输入
问题描述
我正在 NASM 中编写一个brainfuck 解释器,其中代码作为命令行参数提供给程序。我正在尝试测试循环,但 GDB 不喜欢我的输入。例如,这在单独运行时执行无错误:
$./interpret "+++++[->+<]"
它无限期地挂起,但我认为这是由于解释器(因此是 GDB)中的循环逻辑中的错误。
如果我加载interpret
到 GDB 并尝试提供相同的参数,我会收到投诉:
gef➤ start "+++++[->+<]"
/bin/bash: line 1: ]: No such file or directory
/bin/bash: line 1: ]: No such file or directory
这似乎是由于<
尽管有引号但被解释为重定向,因为[]
在 GDB 中工作正常。
我尝试使用 转义 STDIN 重定向\<
,但这会导致相同的错误,并且<<
会导致警告:
gef➤ start "+++++[->+<<]"
/bin/bash: line 1: warning: here-document at line 1 delimited by end-of-file (wanted `]')
代码被切断:
$r15 : 0x00007fffffffe428 → 0x002d5b2b2b2b2b2b ("+++++[-"?)
有没有办法让 GDB 接受我从字面上给出的内容start
,而不是尝试对参数进行任何重定向/解释?
解决方案
有没有办法让 GDB 以我的字面意思开始,而不是尝试对参数进行任何重定向/解释?
GDB 不做任何解释,bash
是的。使用单引号而不是双引号可以解决这个问题。
(不过,我无法使用带有双引号的 GDB-10.0 和 bash-5.1.4 来复制问题。)
推荐阅读
- authentication - 如何使用用户凭据而不是 Web 应用程序对 Azure 数据库进行身份验证
- node.js - 如何修复 Sequelize TypeError:无法读取未定义的属性“toUpperCase”
- asp.net-core - ASP.NET Core 如何在嵌套区域中路由
- powerbi - 将 Power BI 内容嵌入到组织用户的应用程序中 - 需要管理员批准错误
- c# - 从 Jenkins 运行 IIS Express 时 MSSQLLocalDB 登录失败
- git - 维护 Git 项目的分支
- excel - 如何在 Excel VBA 中的行范围内引用命名列
- html - 有没有办法用css定位边框(图像示例)?
- kubernetes-helm - 如何从 Kubernetes 集群中获取图表?不是来自存储库
- swift - WATCH OS:如何寻找 WKInterfaceInlineMovie