Debugging GDB仅从标准输入中读取1个字符
目前我正在学习汇编语言,出于好奇,我想看看我用汇编编写的程序是如何工作的,所以我用-tui和layout asm加载GDB并开始调试 当GDB要求输入标准输入时,我很惊讶,它只需要1个字符,然后停止接收其他字符,即使我没有按enter键 我再次尝试在终端,它的工作良好,我的程序可以采取多个标准输入没有任何问题 在这里,我提供了我的测试组件的一部分,这个问题在以下组件中是可重复的:Debugging GDB仅从标准输入中读取1个字符,debugging,unix,assembly,gdb,nasm,Debugging,Unix,Assembly,Gdb,Nasm,目前我正在学习汇编语言,出于好奇,我想看看我用汇编编写的程序是如何工作的,所以我用-tui和layout asm加载GDB并开始调试 当GDB要求输入标准输入时,我很惊讶,它只需要1个字符,然后停止接收其他字符,即使我没有按enter键 我再次尝试在终端,它的工作良好,我的程序可以采取多个标准输入没有任何问题 在这里,我提供了我的测试组件的一部分,这个问题在以下组件中是可重复的: global main segment .bss ; hold un
global main
segment .bss ; hold uninitialize buffer
szinput resb 10 ; declare 10 bytes uninitialize buffer
nszinput equ $ - szinput ; equ is meaning constant
segment .text
main:
pusha
mov eax, DWORD 3 ; read syscall
mov ebx, DWORD 0 ; 0 is stdin file descriptor
mov ecx, szinput ; void *buf
mov edx, nszinput ; size_t count
int 80h ; invoke syscall
popa
ret
请注意,此程序集用于NASM汇编程序
运行gdb-version,结果是:GNU-gdb-ubuntu7.7.1-0ubuntu5~14.04.2 7.7.10是标准的。好吧,0或1都可以用于sys_read或sys_write。不知道为什么。也许gdb不喜欢它?@FrankKotler,天哪,我犯了一个多么愚蠢的错误,但是将我的文件描述符代码更改为0仍然不能解决我的问题。顺便说一下,我编辑了我的问题,以免把这个错误与其他人混淆。