У меня есть программа сборки, которая выгружает ядро при запуске в одиночку, но не при запуске из 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
нет.