お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2013-07-20 08:26:03

ItSANgo
メンバ
登録日: 2012-07-08

YUM系distributionのdebuginfo-installに相当する機能は有りませんか?

FedoraやCentOSなどYUM系のdistributionにはdebuginfo-installというcommandが有ります。
debuginfo-install command
と指定してやれば、そのcommandや依存するshared objectのdebuginfoをまとめてinstallしてくれるという便利なcommandです。

これに相当する機能がUbuntuにも無いでしょうか?
現状gdbやlddを起動して依存しているshared objectを探し出し、そのshared objectがどのpackageに属しているかをdpkg -Sで調べ、一つ一つpackage-dbgをapt-getしています。
手間がかかります。

debuginfo-install command自体はyum-utilsというpackageにあることを確認したので、早速apt-get install yum-installしてみました。
しかし、このdebuginfo-installはYUM/RPM系packageを前提に作られています。
Ubuntu上ではほとんど役に立ちませんでした。

1) UbuntuにYUM系distributionにあるdebuginfo-installに相当する機能は無いでしょうか?
2) あるcommandに関連するdbg symbolを一気に取得するsmartな方法は無いでしょうか?

皆様のお知恵をお貸しください。

オフライン

 

#2 2013-07-28 15:44:43

ItSANgo
メンバ
登録日: 2012-07-08

Re: YUM系distributionのdebuginfo-installに相当する機能は有りませんか?

ItSANgo による投稿:

現状gdbやlddを起動して依存しているshared objectを探し出し、そのshared objectがどのpackageに属しているかをdpkg -Sで調べ、一つ一つpackage-dbgをapt-getしています。

今やっていることを手順化してみました。

1. GDB でbacktraceを取る。

$gdb /usr/bin/nautilus core 2>&1 | tee bt.txt
(gdb) thread apply all bt

2. backtrace からlibrary名一覧を抽出する。

$awk '/from/ { print $NF }' bt.txt | sort -u  >libs.txt

3. library名以外のゴミを取り除く。

$vi libs.txt

4. library名からpackage名を引く。

$dpkg -S `cat libs.txt` | awk 'BEGIN { FS = ":" } { ++p[$1] } END { for (i in p) { print i }}' >pkg.txt

5. dbg packageをinstallする。

$sudo apt-get install `sed 's/$/-dbg/' pkg.txt`

6. 失敗するpackageがあるなら削除して、5.をやり直す。

$vi pkg.txt
$sudo apt-get install `sed 's/$/-dbg/' pkg.txt`


もっとスマートな方法があれば教えてください。

オフライン

 

Board footer

Powered by FluxBB