• 締切済み

AIX、実行プログラム解析

AIX上でC言語で開発をしています。 できあがった実行プログラムの解析ツールはないでしょうか? 逆アセンブラみたいに詳細でなくて良く、メインから呼出して いる関数の一覧とか、この関数がどこから呼ばれているか、 などの相関図的なものを探しています。 宜しくお願いいたします。

みんなの回答

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

原理的にいえば, 「ある程度」はできるはずです. まず, 実行プログラムのエントリーポイントは (実行ファイルを読めば) わかります. そこからコードを調べて「サブルーチン呼び出し」が見つかれば「別の関数のエントリーポイント」がわかります. これを芋づる式に行えば, いつかは終了します. ただし. 常識的に考えれば一瞬で分かりますが, 「当該関数がどこで終わるのか」はそのようなプログラムでは分かりません. したがって, 「関数でないもの」が紛れ込む可能性はあります. また, 関数テーブルなどから間接呼び出ししたりすると分からなくなる可能性があります. と, こういうことがしたいんでしょうか? 冷静に考えれば「ソースがあればそれを見ればいい」だけだし, これまた原理的には「逆アセンブラの出力を処理すればそれなりになんとかなる」はずでもあります.

  • chie65535
  • ベストアンサー率43% (8520/19369)
回答No.1

>プログラムの解析ツールはないでしょうか? 無いですね。 もしそんな便利なモノがあったら、C言語の開発者の間で話題沸騰、雑誌や専門誌やネットでも話題になるでしょうし、検索すればすぐに見付かるくらい、超有名になっている筈。 でも、そんなモノがあるって話も聞かないし、雑誌にも専門誌にもネットにも載ってないし。 いっそのこと、質問者さんが作ってみてはどうでしょう?実用的なモノが完成したら、たぶん「それ1つで会社を起こして、一生、ソレの売り上げだけで食って行ける」と思いますよ。

guci-ok
質問者

お礼

ですよねぇー。 Dependency Walkerみたいなのが無いかなーと。

関連するQ&A

  • メモリ上にプログラムをロードして実行したい!!

    C言語とマイコンで遊んでる者です。 タイトルの通りSDカードやCF等の記録媒体からマイコンのRAM上にプログラムをロードして実行させたいのですが方法がよく解りません。 説明しにくいのですが、PCで言うところのBIOSみたいな物を予めマイコンに書き込んでおいて、そのプログラムが外部のストレージの中に有る実行ファイルのようになってるプログラムデータをメモリ上にコピーして、処理をそのプログラムのエントリーポイントに受け渡すようなOSモドキみたいな物を作りたいのです。 アセンブラならLDとかMOVとかでメモリにコピー出来るかもしれませんが、C言語ではどのようにしてコピーするのでしょう? 仮にメモリ上にコピー出来てもmain()関数が重複してしまい呼び出す方法が解りません。 こちらもアセンブラならばプログラムカウンタをロードした位置にしてやればいいのでしょうけれど。 C言語ではできないでしょうか? マイコンはAVRかSH2Aで考えています。 何方かご教授願います。

  • 別々に作ったプログラムを繋げたい

    C言語で2つのプログラムを作りました 1つは関数のみを記述したもの もう1つはその関数を定義だけし こっちをメインとして使いたいもの メインで関数を呼び出して実行したいのですが どのようにコンパイルすればいいのかわかりません コンパイル以外に何か特別な作業は必要でしょうか?

  • 市販ゲームのプログラム環境は?

    市販のゲーム(ゲームボーイアドバンスなど)はよくできていますが、そのプログラムサイズがとても小さいことには驚かされます。興味本位の質問なのですが、これらのプログラム(例えば、私の大好きな「ゼルダの伝説」)はどのようなプログラム言語で開発されているのでしょうか?(C?アセンブラ?まさかJava?)また、このようなプログラムは、ゲーム機で実行される際には単独で実行されるのでしょうか?(例えば、何らかのOSがあって、ゲームプログラムはこの上で実行されるとか…)ご存じの方がいらっしゃいましたら、解説して下さい。よろしくお願いします。

  • PHPソースの解析やデバッグに使うツール

    PHPソースの解析やデバッグに使うツール c言語などのコンパイラ言語には優秀なIDEが多数ありますが 皆さんはPHPの開発をする時どのようなツールを使用しているのですか? フリーのPHPソースを解析する際、ステップ実行しながら変数の中身をウォッチ したりしながらソース解析したいのですが、VisualStadioのような便利なIDEはないのですか? そのようなツールなしにPHPソースを書くとすると無茶苦茶大変な気がするのですが 皆さんは、その困難を乗り越えてPHP開発をされているのですか? 素人な質問ですみませんが、詳しい方がいましたら教えてください。

    • ベストアンサー
    • PHP
  • プログラム言語って何があるの?

    私、プログラム言語について調べています。 ウィキペディアをみてもたくさんあって、そこからまたリンクがたくさんあってどこでどのように区切っていいのか分かりません。そこで皆さんに質問したいのですが、プログラム言語はどのようなものがありますか? 大まかにプログラム言語の総称があってその次に (1)機械語(マシン語) (2)アセンブラ言語 高水準言語これの中に (3)インタプリタ言語 (4)コンパイラ言語がありますが、 (1)~(4)のそれぞれの詳細を教えてください。例:BASIC、C等 またこの枠に入らないプログラム言語がありましたら教えてください。 とってもマイナーなものでも構いません。出来ればURL欲しいです。 お願いします。m(_ _)m

  • CASLIIのプログラムで開発ができるの?

    基本情報処理技術者試験の午後のプログラム選択問題にCASLII(過去はCASLだったけど) そのアセンブラ言語なんぞで、何か新規開発ができるのでしょうか? C言語、Java、COBOLなら、色々な会社で開発してることはよ耳にしますが、CASLIIで開発してる とは耳にしたことがありません。もしもCASLIIで開発ができないのなら何の為に午後のプログラム言語問題にあるのでしょうか?それも知ってる方が居たら教えていただきたくて質問しました。 お願い致します。

  • あるプログラム実行中に別のプログラムを起動したい

    とあるC言語で出来たa.outというプログラム実行中に、b.outというプログラムを実行するプログラム「c.c」を作成したいのですが、どのようにプログラミングすればよいでしょうか? a.outは無限ループするような十分に実行時間の長いプログラムです。 ちなみに、c.cはシェルスクリプト「c.sh」でも構いません。

  • PICに書き込むプログラムや変数の容量を少なくする方法

    16f877のpicマイコンでプログラミング作業を行っています もともとPC上でのソフト開発がメインだったので マイコンプログラムはいろいろ制約があり大変です 現在C言語によってプログラムを書いているんですが ccscでコンパイルすると容量不足でエラーがでます not enough ram for valiaホニャララ 等がよく出ます。 マニュアルを読むと変数を減らせとかいろいろ書いてありますが 減らしても改善できません。 知人に聞くとアセンブラで書くといいよと言われましたが アセンブラはわからないのでCじゃないとだめです なにか容量をあまり取らないコーディングやその他のテクニックをご存知の方 教えてください、お願いします。 また、参考になる書籍やURL等がありましたら教えてください

  • ソースが解析できない言語はなに?

    C#やVB.NETだと逆アセンブルのツールなどでソースコードが見れてしまいますが 見ることが出来ない開発言語で一般的なのは何があるでしょうか?

  • 言語の実行スピードで早い順に並べてみたら

    VisualStudio2005とVisualStudio6を持っていますが、同じアルゴリズムで書かれたプログラムで実行速度が速い順を知りたいのですが 私の主観ですが(抜けているものがありましたら追加してください。) 以下のような予想になります。 VC2005++ VC6++ Delphi BCC C# VC.NET 2005 VB.NET 2005 Visual J++ VisualBasic6 皆さんの意見が知りたいです。(Lispやその他の言語もご存知な場合もよろしく。) また、アセンブラ(マシン語)の埋め込みができる言語も知りたいです。昔、下のような記述ができた言語があったような記憶がありますが 今でもどの開発ツール(ボーランド社など他のメーカーも含めて)で可能なのでしょうか? asm{ mov ax, 4000h; int 0x21; }

専門家に質問してみよう