При попытке отладить ядро, выброшенное из-за ошибки сегмента, линия, в которой он падает, на самом деле не имеет смысла в моих глазах;сравниваются два целых числа и результат сохраняется в bool.Это не упрощенный код:
bool doLog = level >= debugLevel;
Это код ассемблера, в котором происходит сбой:
cmp %ebx,0x14(%rbp)
// ebx = 3
// rbp = 0x6e696c7265
Однако при попытке напечатать значение адреса, хранящегося в rbp, я получаюошибка GDB: «не удается получить доступ к памяти по адресу 0x6e696c7279»
Меня беспокоит то, что при печати адреса debugLevel я получу адрес, отличный от того, который хранится в регистре rbp, используемом для cmp:
p &debugLevel => 0x6e696c7279
i r rbp => 0x6e696c7265