所以我第一次进入集会。我有一个演示程序,只是设置一些值,然后移动它们之间的内存位置和寄存器。
太简单了。
问题是,当我试图分析gdb中的程序时,会得到以下错误:
Reading symbols from DataTypes... (no debugging symbols found)... done
GDB被配置为i686-linux-gnu并在一个Windows 10托管的VMWare实例中的Kali Linux上运行。
uname -a: Linux Kali 4.17.0-kali1-686-pae #1 SMP Debian 4.17.8-1kali1 (2018-07-04) i686 GNU Linux
我的代码。。。

# Demo program to show how to use Data types and MOVx instructions

.data

    HelloWorld:
        .ascii "Hello World!"

    ByteLocation:
        .byte 10

    Int32:
        .int 2
    Int16:
        .short 3
    Float:
        .float 10.23

    IntegerArray:
        .int 10,20,30,40,50


.bss
    .comm LargeBuffer, 10000

.text

    .globl _start

    _start:

        nop

        # 1. MOV immediate value into register

        movl $10, %eax

        # 2. MOV immediate value into memory location

        movw $50, Int16

        # 3. MOV data between registers

        movl %eax, %ebx


        # 4. MOV data from memory to register

        movl Int32, %eax

        # 5. MOV data from register to memory

        movb $3, %al
        movb %al, ByteLocation

        # 6. MOV data into an indexed memory location
        # Location is decided by BaseAddress(Offset, Index, DataSize)
        # Offset and Index must be registers, Datasize can be a numerical value

        movl $0, %ecx
        movl $2, %edi
        movl $22, IntegerArray(%ecx,%edi , 4)

        # 7. Indirect addressing using registers

        movl $Int32, %eax
        movl (%eax), %ebx

        movl $9, (%eax)



        # Exit syscall to exit the program

        movl $1, %eax
        movl $0, %ebx
        int $0x80

最佳答案

根据Jester的建议
我使用as标志用-g重新运行编译。
as -g -o DataTypes.o DataTypes.s
链接的
ld -o DataTypes DataTypes.o
运行GDB
gdb ./DataTypes

关于linux - 汇编程序在GDB中找不到调试符号,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52872261/

10-11 15:40