Gdb ve bazı paylaşılan kütüphaneler kullanıyorum. Kendi paylaşılan kütüphaneme adım atmak için gdb'yi alabilirim, ancak üçüncü tarafa değil.gdb kullanarak paylaşılan kütüphaneler ile 3. parti işlevlerine adım atmak için
gdb'yi kullanırken, 3. parti kitaplığına adım atmayı ve bana kendi paylaşılan kitaplık kodumdaki bir sonraki satıra gitmek yerine bu opj_ * işlevlerinin içinde yürütmekte olduğu satırları göstermesini bekliyorum (adım). .
Gerçekten de, derleme sırasında bir şey eksik olduğuma eminim, bağlantı kurmakla uğraşmak (gc'ye bazı hata ayıklama bayraklarını geçmek için gcc almak), ama ne olduğunu bilmiyorum, ya da gdb'yi çalıştırırken bir şey hata ayıklama sembollerinin nerede olduğunu söyleme.
Ben yüklü openjpeg kütüphane, hata ayıklama bilgisi ve devel paketlerini vardır:
İşte detaylar.
# zypper search -si openjpeg
Loading repository data...
Reading installed packages...
S | Name | Type | Version | Arch | Repository
--+--------------------------+---------+-----------+--------+-----------
i | libopenjpeg2_0 | package | 2.0.0-1.4 | x86_64 | packman
i | libopenjpeg2_0-debuginfo | package | 2.0.0-1.4 | x86_64 | packman
i | openjpeg2-devel | package | 2.0.0-1.4 | x86_64 | packman
# rpm -ql libopenjpeg2_0
/usr/lib64/libopenjpeg.so.2.0
/usr/lib64/libopenjpeg.so.2.0.0
# rpm -ql openjpeg2-devel
/usr/include/openjpeg-2.0
/usr/include/openjpeg-2.0/openjpeg.h
/usr/lib64/libopenjpeg.so
/usr/lib64/openjpeg-2.0
/usr/lib64/openjpeg-2.0/OpenJPEGConfig.cmake
/usr/lib64/openjpeg-2.0/OpenJPEGTargets-release.cmake
/usr/lib64/openjpeg-2.0/OpenJPEGTargets.cmake
# rpm -ql libopenjpeg2_0-debuginfo
/usr/lib/debug
/usr/lib/debug/.build-id
/usr/lib/debug/.build-id/85/f8603c75aadee0bd66653332d7ce16d0292752
/usr/lib/debug/.build-id/85/f8603c75aadee0bd66653332d7ce16d0292752.debug
/usr/lib/debug/usr/lib64/libopenjpeg.so.2.0.0.debug
Ben libopenjpeg bağlantılı libjna_openjpeg paylaşılan kütüphane var.
Ben
gcc -ggdb -c -fpic -I/usr/include/openjpeg-2.0 jna_openjpeg.c -lopenjpeg
gcc -ggdb -shared -o libjna_openjpeg.so jna_openjpeg.o -lopenjpeg
gcc -ggdb -I/usr/include/openjpeg-2.0 -L. -o pathtest pathtest.c -ljna_openjpeg -lopenjpeg
"... gcc -ggdb" "... gcc -g" "pathtest" Ben her derlenmiş libopenjpeg ve libjna_openjpeg bağlantılı bir test programı var ve ayrıca çalıştı
bazı yorumlar kaldırıldı ile benim paylaşılan kütüphane kod snippet'i:
opj_stream_t* p_stream = opj_stream_create_default_file_stream(p_file, p_is_read_stream);
opj_codec_t *p_decompressor = opj_create_decompress(CODEC_J2K);
// my bug I want to debug is here... this always returns 0
p_image = opj_decode(p_decompressor, p_stream);
çalışan gdb
$ gdp pathtest
...
(gdb) s
52 opj_codec_t *p_decompressor = opj_create_decompress(CODEC_J2K);
(gdb) s
59 p_image = opj_decode(p_decompressor, p_stream);
(gdb) s
gdb sürümü
# gdb --version
GNU gdb (GDB) SUSE (7.3-41.1.2)
...
's' yerine' si '(adım talimatı) kullanmayı denediniz mi? –
si libopenjpeg'e adım atıyor gibi görünüyor, ancak bu noktada yararlı olduğunu sanmıyorum ... Kodun ne yaptığını anlamama yardımcı olması için satır numaralarına, değişken adlara veya bir şeye ihtiyacım var. Bence gdb hata ayıklama bilgisini kaçırıyor ... .so dosyası veya gdb'ye nasıl bağlanacağını bilmek istiyorum. İşte benim "s" ile test: http://pastebin.com/yaCBkZr4 – Peter