Skip to content

Для тех, кто коммитит

akruphi edited this page Oct 12, 2024 · 8 revisions

Немного цитат elfmz

  • https://github.com/elfmz/far2l/issues/802#issuecomment-1726311209

    far2l - это проектик для души, а не для гонки. Который хочется чтоб работал стабильно и был удобен, а постоянное внедрение новых фич - это второстепенная задача. Такой вот дауншифт от тенденций софтостроения)

  • https://github.com/elfmz/far2l/issues/2230#issuecomment-2230572396

    самая большая разница между программирвоанием под винду и под юникс вовсе не в том что в винде CreateFile(), а в юниксе open(), а в том, что под виндой у тебя уютный компилятор любимой версии и унифицированное окружение, а юниксы - зоопарк окружений, причем твой проект собирают вооще другие люди с большинством из которых ты ваще никак не знаком, под железо которое ты никогда не брал в свои руки...

Как, что, где

Note: смотреть CHM в Linux, например, через xCHM (наиболее корректно) или через Okular — просмотр CHM как подряд идущих страниц, но возможны сбои рендеринга текста ссылок и области щелчка по ним.

Отладочные fprintf с выводом логов в терминал или в файл

  • включение вывода логгирования и выбор куда: https://github.com/elfmz/far2l/wiki/Running-far2l-with-debug-logging-enabled

    • в терминале export FAR2L_STD=/path/to/log для лога в файл или export FAR2L_STD=- для лога в stdout терминала, также по необходимости export NETROCKS_VERBOSE=9 и затем в этом же терминале запустить far2l
      • export FAR2L_STD= перенаправление сразу и stdout и stderr (см. SetupStdHandles() в /WinPort/src/Backend/WinPortMain.cpp)
      • export FAR2L_STDOUT= перенаправление отдельно stdout
      • export FAR2L_STDERR= перенаправление отдельно stderr
      • внутри far2l обычно отладочный вывод в stderr
    • отладочный вывод Colorer: https://github.com/elfmz/far2l/pull/2385 (начиная с сентября 2024)
      export FAR2L_STDERR=somefile.log
      export COLORER_VERBOSE=debug # colorer verbose levels: off (default), error, warn or warning, info, debug
      far2l
  • отладочная печать в коде: fprintf(stderr, "муа-ха-ха %i", 42); и т.п.

    • шпаргалка по выводу в консоль всего зоопарка строковых типов far2l (спасибо unxed: https://github.com/elfmz/far2l/issues/801 )

      // null-terminated strings (c-strings) made of chars
      // (examples below should also work with LPSTR/LPCSTR/CHAR)
      
      char *sample;
      fprintf(stderr, "%s\n", sample);
      
      char sample[fixed_length_in_bytes_plus_one_for_terminating_zero];
      fprintf(stderr, "%s\n", sample);
      
      // null-terminated strings (c-strings) made of wide chars
      // (examples below should also work with LPWSTR/LPCWSTR/LPTSTR/LPCTSTR/WCHAR/TCHAR)
      
      wchar_t *sample;
      fprintf(stderr, "%ls\n", sample);
      
      wchar_t sample[fixed_length_in_wide_chars_plus_one_for_terminating_zero];
      fprintf(stderr, "%ls\n", sample);
      
      // standard C++ classes for strings
      // for accessing class methods via pointer to object of that class replace "." with "->"
      
      std::string sample;
      fprintf(stderr, "%s\n", sample.c_str());
      
      std::wstring sample;
      fprintf(stderr, "%ls\n", sample.c_str());
      
      // Far internal string class
      
      FARString sample;
      fprintf(stderr, "%s\n", sample.GetMB().c_str());
      fprintf(stderr, "%ls\n", sample.CPtr());
      
      UnicodeString sample;
      fprintf(stderr, "%s\n", sample.GetMB().c_str());
      
      // string classes used in Colorer
      // (examples below should also work with CString and DString classes)
      
      String sample;
      fprintf(stderr, "%ls\n", sample.getWChars());
      
      SString sample;
      fprintf(stderr, "%ls\n", sample.getWChars());
      
      // wxString
      wxString sample;
      fprintf(stderr, "%s\n", sample.ToStdString().c_str());
      //or
      fprintf(stderr, "%s\n", sample.mb_str().data());
      //or
      fprintf(stderr, "%ls\n", static_cast<const wchar_t*>(sample.wc_str()));

      Про wxString: https://docs.wxwidgets.org/3.0/classwx_string.html#string_vararg

Про отладочную информацию через gdb