Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/unix/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Debugging GDB仅从标准输入中读取1个字符_Debugging_Unix_Assembly_Gdb_Nasm - Fatal编程技术网

Debugging GDB仅从标准输入中读取1个字符

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

目前我正在学习汇编语言,出于好奇,我想看看我用汇编编写的程序是如何工作的,所以我用-tui和layout asm加载GDB并开始调试

当GDB要求输入标准输入时,我很惊讶,它只需要1个字符,然后停止接收其他字符,即使我没有按enter键

我再次尝试在终端,它的工作良好,我的程序可以采取多个标准输入没有任何问题

在这里,我提供了我的测试组件的一部分,这个问题在以下组件中是可重复的:

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.1

0是标准的。好吧,0或1都可以用于sys_read或sys_write。不知道为什么。也许gdb不喜欢它?@FrankKotler,天哪,我犯了一个多么愚蠢的错误,但是将我的文件描述符代码更改为0仍然不能解决我的问题。顺便说一下,我编辑了我的问题,以免把这个错误与其他人混淆。