Решено: Cuneiform, ubuntu и отладочные символы. (Печальная повесть к которой вы можете дописать счастливый конец.)

Модератор: Модераторы разделов

sciko
Сообщения: 1744
Статус: Ъ-участник
ОС: Debian/Ubuntu/etc

Решено: Cuneiform, ubuntu и отладочные символы.

Сообщение sciko »

Нет повести печальнее на свете, чем повесть об отладке без отладочных символов.

В репах Debian sid и Ubuntu 10.04 появился пакет сuneiform, что конечно не может радовать.
Но как-то попался мне рисунок замысловатый, который уронил сuneiform.
Но это не беда -- верный gdb мудростью нас одарит неземной.
О, боже! Что за оказия?! Что ты мне кажешь верный gdb?!

Код: Выделить всё

$ gdb -q cuneiform
Reading symbols from /usr/bin/cuneiform...(no debugging symbols found)...done.
(gdb) quit


Неужели make был без опции "-g"?!
Пересоберём пакет! Лог сборки (начало, если будет нужно выложу остальное):

Код: Выделить всё

 dpkg-buildpackage -rfakeroot -D -us -uc
dpkg-buildpackage: установка CFLAGS в значение по умолчанию: -g -O2
dpkg-buildpackage: установка CPPFLAGS в значение по умолчанию:
dpkg-buildpackage: установка LDFLAGS в значение по умолчанию: -Wl,-Bsymbolic-functions
dpkg-buildpackage: установка FFLAGS в значение по умолчанию: -g -O2
dpkg-buildpackage: установка CXXFLAGS в значение по умолчанию: -g -O2
dpkg-buildpackage: пакет исходных текстов cuneiform
dpkg-buildpackage: версия исходных текстов 0.7.0+dfsg-5
dpkg-buildpackage: исходные тексты изменены Daniel Baumann <daniel@debian.org>
dpkg-buildpackage: архитектура хоста i386
 fakeroot debian/rules clean
dh clean
   dh_testdir
   debian/rules override_dh_auto_clean
make[1]: Вход в каталог `/home/sciko/test/cuneiform-0.7.0+dfsg'
dh_auto_clean
rm -rf build
make[1]: Выход из каталога `/home/sciko/test/cuneiform-0.7.0+dfsg'
   dh_clean
 dpkg-source -b cuneiform-0.7.0+dfsg
dpkg-source: инфо: используется формат исходника `1.0'
dpkg-source: инфо: сборка cuneiform с использованием существующего cuneiform_0.7.0+dfsg.orig.tar.gz
dpkg-source: инфо: сборка cuneiform в cuneiform_0.7.0+dfsg-5.diff.gz
dpkg-source: инфо: сборка cuneiform в cuneiform_0.7.0+dfsg-5.dsc
 debian/rules build
dh build
   dh_testdir
   dh_auto_configure
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of void*
-- Check size of void* - done
-- Performing Test HAVE_GCCVISIBILITY
-- Performing Test HAVE_GCCVISIBILITY - Success
-- checking for module 'ImageMagick++'
--   found ImageMagick++, version 6.5.1
-- Adding __snp.c to individual libraries.
-- Configuring done
-- Generating done
-- Build files have been written to: /home/sciko/test/cuneiform-0.7.0+dfsg/obj-i486-linux-gnu
   debian/rules override_dh_auto_build
make[1]: Вход в каталог `/home/sciko/test/cuneiform-0.7.0+dfsg'
mkdir -p build
cd build && cmake -DCMAKE_BUILD_TYPE=relwithdebinfo -DCMAKE_EXE_LINKER_FLAGS:STRING=-Wl,--as-needed -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_RPATH=/usr/lib/cuneiform ..
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of void*
-- Check size of void* - done
-- Performing Test HAVE_GCCVISIBILITY
-- Performing Test HAVE_GCCVISIBILITY - Success
-- checking for module 'ImageMagick++'
--   found ImageMagick++, version 6.5.1
-- Adding __snp.c to individual libraries.
-- Configuring done
-- Generating done
-- Build files have been written to: /home/sciko/test/cuneiform-0.7.0+dfsg/build
/usr/bin/make -C build
make[2]: Вход в каталог `/home/sciko/test/cuneiform-0.7.0+dfsg/build'
make[3]: Вход в каталог `/home/sciko/test/cuneiform-0.7.0+dfsg/build'
make[4]: Вход в каталог `/home/sciko/test/cuneiform-0.7.0+dfsg/build'
Scanning dependencies of target windummy
make[4]: Выход из каталога `/home/sciko/test/cuneiform-0.7.0+dfsg/build'
make[4]: Вход в каталог `/home/sciko/test/cuneiform-0.7.0+dfsg/build'
............

WTF? Ключ -g на месте или я чего-то не понимаю?

Поиск по лаунчпаду дал вот этот баг. Но это прокатывает для Gentoo, но не для Ubuntu.

Какие предложение будут? Предупреждаю сразу: я с сmake не очень дружу.

ЗЫ. Собирал и версию из репов и самую последнюю с лаунчпада. Без разницы.
ЗЫЫ. Файл, который предлагается патчить:

Код: Выделить всё

include_directories(Kern/include
Kern/h
Kern/hh
Kern/hhh
Kern/hdebug
Kern/hrk
Kern/hrkint
Kern/hrstr
Kern/fon/src
Kern/usage
)

# Hide non exported functions/variables
include(CheckCCompilerFlag)
if(CMAKE_COMPILER_IS_GNUCC AND NOT WIN32)
    check_c_compiler_flag("-fvisibility=hidden -DHAVE_GCCVISIBILITY" HAVE_GCCVISIBILITY)
    if (HAVE_GCCVISIBILITY)
        add_definitions("-fvisibility=hidden -DHAVE_GCCVISIBILITY")
    endif()
endif()

# Stop MSVC complaints about POSIX functions.
if(MSVC)
    add_definitions(-D_CRT_SECURE_NO_WARNINGS)
    if(NOT MSVC60)
        set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /wd4996")
        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4996")
    endif()
endif()

add_definitions(-D_USE_RVERLINE_)

find_package(ImageMagick COMPONENTS Magick++)
if(ImageMagick_Magick++_FOUND)
    set(USE_MAGICK TRUE)
    include_directories(${ImageMagick_Magick++_INCLUDE_DIR})
    message(STATUS "ImageMagick++ found at ${ImageMagick_Magick++_INCLUDE_DIR}.")
    set(cli_ext_libs ${ImageMagick_Magick++_LIBRARY})
else()
    set(USE_MAGICK FALSE)
    message(STATUS "ImageMagick++ not found. Only uncompressed BMP images supported.")
endif()

configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Kern/include/config.h.in ${CMAKE_CURRENT_BINARY_DIR}/Kern/include/config.h)
include_directories(${CMAKE_CURRENT_BINARY_DIR}/Kern/include)

# Libdl is needed only on Apple and Linux (that I know of).
if(NOT WIN32 AND NOT CMAKE_SYSTEM_NAME STREQUAL "FreeBSD")
    find_library(DL_LIB dl)
endif()

# Emulate Windows DLL symbol resolve order.
if(UNIX AND NOT APPLE)
  set(CMAKE_SHARED_LINKER_FLAGS "-Wl,-Bsymbolic")
endif()

if(MINGW)
  set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -mwindows")
endif()

add_subdirectory(Kern)
add_subdirectory(cli)
Спасибо сказали:
sciko
Сообщения: 1744
Статус: Ъ-участник
ОС: Debian/Ubuntu/etc

Re: Решено: Cuneiform, ubuntu и отладочные символы.

Сообщение sciko »

М-м-м... Помогло выставление переменной окружения

Код: Выделить всё

DEB_BUILD_OPTIONS="nostrip noopt"

Я подсмотрел это в дебиановской вики.
nostrip -- включает выставление отладочных символов,
noopt -- отключает оптимизацию (на случай если она будет мешать отладке, но это не обязательно)
Спасибо сказали: