Задать вопрос
  • Ошибка unhandled dwarf2 в Valgrind как можно исправить и с чем связана?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    при использовании Valgrind выпадает ошибка:

    Расскажи для начала поподробнее, как именно ты его используешь.

    Опытным путём пришёл к выводу что проблемма связана с ошибкой в самом make.

    м... а почему valgrind ругается вот на это:
    ==6410== Valgrind:   "/media/mid/Main_file_m2/Road/rank 0/libftTester/a.out"
    Ответ написан
  • По какой причине метод не определён?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    По какой причине не видятся методы .x .y
    sqrt(x<T>()^2 + y<T>()^2);

    А почему ты думаешь, что это шаблонные методы? Вот здесь
    var_type name (var_type value = 0) { \
    определение совсем не шаблонное. Т.е. надо выкинуть <T>. А когда ты так сделаешь, x и y станут независимыми именами, и чтобы компилятор их нашёл в родительском классе надо будет либо добавить перед ними this->, либо как-нибудь ещё ему подсказать.
    Т.е. вот так должно бы работать:
    template<typename T>
    float DVector(2)<T>::length()
    {
        return sqrt(this->x()^2 + this->y()^2);
    }


    И, кстати, ^2 -- это (без дополнительных усилий) не возведение в квадрат.
    Ответ написан
  • Как настроить IDT в защищенном режиме процессора(assembler)?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Я гуглил, но понятного объяснения не нашел.

    Ок, вот первая ссылка из гугла по запросу "x86 idt". Скажи, есть ли что-то на этой странице, что вызывает трудности?

    Или, если тебе больше нравятся оригинальные документы, вот классическая книжка об x86 от интела. Для понимания программирования idt следует прочитать главу 6.5 "Interrupts and exceptions" в первом томе для ознакомления с общей картиной, и главу 6 "Interrupt and exception handling" в третьем томе для понимания деталей.
    Ответ написан
  • Как исправить ошибку Memory limit?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Подозреваю, что дело в локальных переменных i и j в строках 42 и 43 и использовании какого-нибудь старого стандарта C++ продлевающего их области действия до конца охватывающего блока, из-за чего в check не отрабатывает условие в строке 30. Предлагаю убрать int в строках 42 и 43.
    Ответ написан
  • Почему systemd-journald ест много оперативки?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Из 2 гигов оперативки занято 500 мб, причём раньше свободно было больше.

    Память должна быть занятой. Если она свободна -- значит она никому не нужна.

    Из-за чего systemd-journald может есть 10% от оперативки? Куда смотреть?

    Смотреть в колонку VIRT -- приложение выделило себе 266М виртуальной памяти. То, что оно использовало 202М физической памяти для этого -- это просто прекрасно.

    Как только в системе появятся другие пользователи памяти -- будь спокоен, физическая память будет отобрана у приложений которые её не используют и передана приложениям которым она нужна.
    Ответ написан
    1 комментарий
  • Почему не берутся пробелы в bash переменной?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    файл "Название какого-то файла.mkv" $WhatFile возвращает в виде "Название" , отрезая всё, что есть после первого пробела

    для этого вместо for WhatFile in $(...) лучше использовать конструкцию find ... -print0 | xargs -0 .... Т.е.
    find $Downloads -regex ".*\.\(mkv\|m4v\|mp4\|ts\|avi\)" -and -mmin +30 -print0 | sort -zr | xargs -0 -I\{} bash -c '
    WhatFile=\{}
    // извлекаем название найденного файла
    WhatFileName=$(basename "$WhatFile"  )
    echo "$WhatFileName"
    // извлекаем папку найденного файла
    WhatFolder=$(dirname "$WhatFile"  )
    echo "$WhatFolder"
    // извлекаем папку найденного файла
    #echo WhatFolder $WhatFolder
    #переименование
    #файла
      if [ -n "$WhatFileName" ]; then
      WhatRenameFile=$( echo "$WhatFileName" |
      sed -f "$Renamer" )
        if [ "$WhatFileName" != "$WhatRenameFile" ]; then
          echo "переименовываем файл из "$WhatFileName" в "$WhatRenameFile""
        mv -fv "$WhatFile" "$WhatFolder"/"$WhatRenameFile"
      echo "пауза 2 секунды"
        sleep 2s
      else 
        echo "Файл соответствует правилам "$WhatFileName""
        fi
      #echo $WhatRenameFile
      fi
    '
    Ответ написан
  • Почему ВМ перезагружается?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Я пишу ос и у меня возникла проблема

    Возникла проблема -- отлаживай.
    Разберись, что за адрес у тебя загружается здесь в GDT.

    Вот так это можно пофиксить.
    Ответ написан
  • Почему ядро странно себя ведет?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Я пишу новую операционную систему и столкнулся с непредвиденным поведением ядра

    Обычно в этот момент люди начинают пользоваться отладчиком.

    проблема в файле kernel\kernel.asm

    Нет. Ядро твоё не запускается, потому что бутлоадер пытается загрузить его поверх собственного кода:

    0x00008122:  bb 00 81                 movw     $0x8100, %bx
    0x00008125:  50                       pushw    %ax
    0x00008126:  b8 00 00                 movw     $0, %ax
    0x00008129:  8e c0                    movw     %ax, %es
    0x0000812b:  58                       popw     %ax
    0x0000812c:  cd 13                    int      $0x13

    -- это вызов int 13 из бутлоадера, посмотри на адреса. Вот куда возвращается выполнение после этого int 13:

    0x0000812e:  00 00                    addb     %al, (%bx, %si)
    0x00008130:  00 00                    addb     %al, (%bx, %si)
    0x00008132:  00 00                    addb     %al, (%bx, %si)
    0x00008134:  00 00                    addb     %al, (%bx, %si)
    0x00008136:  00 00                    addb     %al, (%bx, %si)
    0x00008138:  00 00                    addb     %al, (%bx, %si)
    0x0000813a:  00 00                    addb     %al, (%bx, %si)
    0x0000813c:  00 00                    addb     %al, (%bx, %si)
    0x0000813e:  00 00                    addb     %al, (%bx, %si)
    0x00008140:  00 00                    addb     %al, (%bx, %si)
    0x00008142:  00 00                    addb     %al, (%bx, %si)
    0x00008144:  00 00                    addb     %al, (%bx, %si)


    Такие дампы ты можешь получить запуская своё ядро в qemu следующим образом:
    qemu-system-i386 -hda collector.bin -d in_asm,exec,cpu -D log
    Ответ написан
    7 комментариев
  • Как запустить другую программу на NASM-е?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как из файла ассемблера (NASM) запустить exe-шник?

    Системным вызовом (т.е. вызовом функции ядра ОС, например execve), либо вызовом библиотечной функции, которая сделает этот системный вызов за тебя (например функции библиотеки C system или функции win32 API CreateProcess).

    Не отдельно, а как-будто ассемблерский файл это и есть ос?

    Загрузить исполняемый файл в память, если он не статически слинкован -- загрузить все его зависимости (и все их зависимости, соответственно), связать вызовы сделанные через таблицы импорта, выполнить релокации для объектов, которые загружены не по адресам для которых они собраны, очистить bss, выделить стек, инициализировать регистры для первого потока, перейти в точку старта. Обычно ядро делает только загрузку исполняемого образа и динамического линковщика, инициализацию bss, выделение стека и запуск первого потока, а дальше динамический линковщик делает всё остальное в юзерспейсе.
    Ответ написан
    Комментировать
  • Могу ли я подключить ноутбук к розетке в поезде?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    может кто сталкивался с этим

    сталкивался с этим, узнал один нюанс: ток в розетке постоянный, если зарядка не работает в одном положении вилки в розетке, нужно вилку перевернуть.
    Ответ написан
  • Массив указателей на функции. Почему программа не даёт результат?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Мне нужно выполнить функцию, из массива указателей на функцию, номер которой я укажу в консоли. Почему не выполняется?

    Потому что mass[0]; -- это не вызов функции, а просто указатель. Вызов функции выглядит так: mass[0]();
    Ответ написан
    Комментировать
  • Как исправить ошибку E0304?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Не понимаю, откуда эта ошибка появляется


    Здесь написано, что create_huge_matrix принимает два аргумента, и второй имеет такой же тип, как тип элементов внутреннего вектора:
    template <typename T>
    void create_huge_matrix(std::vector<std::vector<T>>& matrix, T lowerLimit);


    а здесь первый аргумент типа std::vector<std::vector<double>>, а второй -- int:
    create_huge_matrix(matrix_s, 5);

    а здесь вообще только один аргумент:
    create_huge_matrix(matrix_p);
    Ответ написан
    Комментировать
  • Как описать перегрузку оператора умножения?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    перегрузка оператора должна скалярно умножать два массива. Под этим подразумевается, например: массив1 - 3,2; массив2 - 5,1, скалярное умножение: 3*5 + 2*1 = 17

    LabArray operator* (const LabArray& other) {
          double sum = 0;
            for (int i = 0; i < size; ++i) {
              sum += Array[i] * other.Array[i];
            }
          return sum;
        }

    Если результатом должно быть число и возвращаешь ты double, то почему тип возвращаемого значения -- LabArray?
    Ответ написан
    Комментировать
  • Как проверить число ли подается на вход?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    isdigit

    проверяет, является ли символ цифрой или нет. Помогло бы вам, если бы вы получали из стандартного ввода строку и сами переводили её в число. Но нет, операция
    int count_students;
      cin >> count_students;

    вводит не строку, а число.

    Чтобы проверить, был ли ввод успешным или нет можно вызвать cin.fail(), типа того:
    cin >> count_students;
      if (cin.fail()) {
        cout << "Неправильные входные данные. Попробуйте еще раз.";
        cin.clear();
        cin.ignore();
        goto Step1;
      }
    Ответ написан
    1 комментарий
  • Lsusb и lspci не видят тачпад ноутбука ELAN, однако dmesg его видит?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    lsusb и lspci не видят его

    и это правильно, потому что, судя по dmesg, это i2c устройство подключенное к i2c-контроллеру висящему на шине PCI (вот к этому: 00:15.1 Serial bus controller: Intel Corporation Cannon Point-LP Serial IO I2C Controller #1 (rev 30)).
    Ответ написан
    3 комментария
  • Как на Linux читать и изменять память процесса?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Классический способ состоит в использовании системного вызова ptrace с кодами запроса PTRACE_ATTACH для присоединения к процессу, PTRACE_PEEKTEXT и PTRACE_POKETEXT для чтения и записи его памяти и PTRACE_DETACH для отсоединения.
    Ответ написан
    Комментировать
  • Нормален ли такой код?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Нормален ли такой код?

    В каком смысле "нормален"? Он понятен, но не очень хорошо организован и делает какие-то с виду лишние действия.
    Ответ написан
  • Как инициализировать n так что бы оно работало для всех введенных n,а не только для 2?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    код работает только для 2 строк , а как записать что бы для всех которые будет вводить пользователь?

    заменить
    int k[2]={};
    на
    int k[100]={};
    Ответ написан
    Комментировать
  • Не запускается ядро Linux?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Что я делаю не так?

    Ты не предоставляешь достаточно данных для диагностики. Как ты конфигурировал своё ядро? Как устанавливал?

    Unable to mount root fs on unknown-block(0,0)

    мой хрустальный шар говорит, что ты либо не установил модули своего ядра, либо они не попали в initramfs.
    Ответ написан
    21 комментарий
  • Чем это достигается?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    выбором компилятора? опциями компилятора? неизвестно, ты не привёл никакой полезной информации.
    Ответ написан
    2 комментария