C言語のgdbで苦戦した話
先日初めて、C言語でgdbを用いてデバッグしたのですが、少々苦戦したのです。
やりたいこと
gdbを用いてちゃんとHelloWorldを出力させる。
ディレクトリ構成
drwxrwxr-x 2 zombiest zombiest 4096 9月 29 22:34 c_file
drwxrwxr-x 2 zombiest zombiest 4096 9月 29 22:43 gdb_file
下で説明しますが、カレントディレクトリよりgccコマンドを打ち込みます。
ソースコード
#include <stdio.h>
int main(void)
{
char* str = "Hello World";
printf("%s\n", str);
return 0;
}
次にコマンドを打ち込んでファイルを出力させます。
gcc コンパイルするファイル -o 出力先ファイル
gcc ./c_file/HelloWorld.c -o ./gdb_file/HelloWorld.out
ファイルが出力されたか確認しましょう。
ls -l ./gdb_file/
-rw-rw-r-- 1 zombiest zombiest 19232 9月 29 23:11 HelloWorld.out
じゃあ、最後にgdbコマンド叩いてデバッグしてみましょう!と言いたいのですが
ここで注意です!
気づいた方もいらっしゃるかもしれませんが、今のファイル権限は"664"です。
ここでは詳しくは解説しませんが、実行権限がない状態になります。
実行権限を変えてあげる必要があります。
chmod 755 ./gdb_file/HelloWorld.out
気を取り直してgdbコマンド投入
gdb ./gdb_file/HelloWorld.out
(以下、抜粋)
Reading symbols from ./gdb_file/HelloWorld.out...
(gdb) run
Starting program: /home/zombiest/working/gdb_file/HelloWorld.out
Hello World
[Inferior 1 (process 20417) exited normally]
(gdb)
できました〜
ちなみに、実行権限664の状態でやると
/gdb_file/HelloWorld.out: 実行できません: 許可がありません
って怒られます。いわゆる”Permission Denied”ってやつですね!気をつけましょう。
ここまで読んで頂き、ありがとうございました!
Author And Source
この問題について(C言語のgdbで苦戦した話), 我々は、より多くの情報をここで見つけました https://qiita.com/Zombie_PG/items/0e686b0c444ebd0ebe86著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .