Как я могу иметь программу, которая выводит ядро, а не из GDB? - PullRequest
0 голосов
/ 22 мая 2018

У меня есть программа сборки, которая выгружает ядро ​​при запуске в одиночку, но не при запуске из gdb.Зачем ?И почему это дампы ядра?Как узнать?

Версия c ++:

#include <iostream>
using namespace std;

int main()
{
    bool a = true;
    bool b = false;
    bool r = a && b;
    cout << (r ? "true" : "false") << endl;
}

Источник сборки (AT & T):

.text
.globl main
main:
movb $0x1,-0x3(%rbp)
movb $0x0,-0x2(%rbp)
cmpb $0x0,-0x3(%rbp)
je falsesomewhere
cmpb $0x0,-0x2(%rbp)
je falsesomewhere
mov $0x1,%rax
falsesomewhere:
mov $0x0,%rax
jmp boolfinal
trueeverywhere:
mov $0x1,%rax
jmp boolfinal
boolfinal:
call print_bool
mov $0, %rax
ret

print_bool:
mov %rdi, %rsi
cmp $0, %rdi
jne swtrue
mov $false, %rdi
jmp end
swtrue:
mov $true, %rdi
end:
mov $0, %rax
call printf
ret

.data
message:.string "%d\n"
true:.string "true\n"
false:.string "false\n"

Makefile:

SRC=asprgm
build: $(SRC).s
    as -g $(SRC).s -o $(SRC).o
    gcc $(SRC).o -o $(SRC)
run: build
    ./$(SRC)
debug: build
    gdb ./$(SRC)

Следовательно make run дампы ядра, но make debug нет.

...