gpt4 book ai didi

javascript - 与 gdb 交互工作意外

转载 作者:行者123 更新时间:2023-11-30 15:35:39 25 4
gpt4 key购买 nike

我只是在尝试控制 gdb,玩具 是 gdb 的幌子。

代码来自 this answer : 在我的 fedora 系统上使用 python3 非常适合我。但由于某种原因不适用于 gdb。

这个有效:

var child = require('child_process');
var ps = child.spawn('python', ['-i']);
ps.stdout.pipe(process.stdout);
ps.stdin.write('1+1');
ps.stdin.end();

这不起作用:

var child = require('child_process');
var ps = child.spawn("gdb", ['gdb-test', '-q']);
ps.stdout.pipe(process.stdout);
ps.stdin.write('start');

问题:(1) 它将此打印到标准输出:

Reading symbols from gdb-test...Reading symbols from gdb-test...done.

所以出于某种原因,好像命令运行了两次。 (2) 最重要的是,start 命令没有输入到 gdb 中,它也没有执行通常在 main 中放置断点的操作。

例如:如果我在 bash 中手动运行,start 将导致:"Temporary breakpoint 1, main () at gdb-test.c:5"

gdb-test 是否编译了这段代码:

//gdb-test.c:
#include<stdio.h>
int main()
{
int i = 10;
i++;
printf("%d\n");
}

我知道gdb has -tty 选项,我不太确定设置 tty 应该如何工作,这里的任何线索也将受到欢迎,或者有关设置 tty 和与 gdb 机器界面交互的线索.

最佳答案

the start command isn't fed into gdb and it doesn't do it's usual thing of putting a breakpoint inside main

当您在 gdb 提示符下手动键入 start 命令时,您正在按 Enter 实际执行它。你应该在 js 脚本中做同样的事情。在start命令末尾添加\n:

ps.stdin.write('start\n');

至于(1)问题我无法在Fedora上重现。

关于javascript - 与 gdb 交互工作意外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41588414/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com