
GDBに詳しい方、教えてください。
gdb8.2.1(gccは8.3.0を使っています。)を使っているのですが、以下のアセンブルコードのデバッグで、以前の32ビットのヴァージョンでの表示の書き方ができなくなっている様なのですが、64ビットのヴァージョンでは以下の(1)〜(3)は、どの様に書いたら良いのでしょうか?
(1)(gdb) x/w &num
変数numのアドレス値の内容を表示するのですが、
「Can't take address of "num" which isn't an lvalue.」
となってしまいます。
(2)
(gdb) print num
変数numの内容を表示($1 = 6)するのですが、
$1 = num
となってしまいます。
(3)
(gdb) print/c (char[6])string
配列stringの要素を6つのchar型と仮定して表示するのですが、
Invalid cast.
となってしまいます。
(アセンブルコード)
.file "examgdb.s"
.data
num: .long 0x6
string: .ascii "abcdef"
iarray: .word 0x1234, 0x5678, 0x9abc, 0xdef0, 0x1234, 0xffff
.text
.globl main
main:
movl $0, %esi
looptop:
movb string(%esi), %al
movw iarray( , %esi , 2 ), %dx
incl %esi
cmpl num, %esi
jb looptop
endloop:
ret
No.1ベストアンサー
- 回答日時:
先の件と同じく、Debian 10.7、gcc (GCC) 10.1.0, gdb (GDB) 9.2環境でのテストです。
$ gcc -g examgdb.s
$ gdb a.out
(gdb) x/w &num
0x404028: 6
(gdb) print num
'num' has unknown type; cast it to its declared type
(gdb) print/c (char[6])string
$1 = {97 'a', 98 'b', 99 'c', 100 'd', 101 'e', 102 'f'}
(gdb)
の様に表示されます。
No.2
- 回答日時:
NO1です。
失礼しました。以下を追加します。$ file a.out
a.out: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, with debug_info, not stripped
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
プログラム言語について c言語...
-
c++でテンプレートのコードでわ...
-
c言語
-
DLLファイルの逆コンパイラにつ...
-
C言語の関数のextern宣言
-
C言語について(初心者)
-
C言語について。
-
C言語をコンパイルするとコンピ...
-
C言語について。
-
変数名を引数として渡す、アド...
-
VisualStudioでC++クラスを追加...
-
スタックフレームの消滅
-
visual studio 2022でのC#プロ...
-
C言語 関数、変数の宣言について
-
c言語のリダイレクトによる円...
-
CPUが16bitでも32bitOSでコンパ...
-
0 == False はいいけど
-
インクリメント演算子のみを用...
-
C言語 配列と関数の練習問題
-
C言語の関数と配列に関する質問
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
DLLファイルの逆コンパイラにつ...
-
大量のデータを読み込んで表示...
-
c言語
-
gccを行ってもexeファイルが生...
-
visual studio 2022でのC#プロ...
-
【C言語】全角文字の配列を、全...
-
Windows Formアプリからコンソ...
-
VisualStudioでC++クラスを追加...
-
VisualStudio2022でC言語プログ...
-
プログラマー達は何故、プログ...
-
C++でデスクトップGUIアプリ開...
-
逆コンパイルと逆アセンブルの...
-
C言語について。
-
C#でTreeViewのCheckBoxのサイ...
-
C言語の関数のextern宣言
-
int16_t の _t は何?
-
C#でログファイルにファイルパ...
-
ディスプレイの解像度とマウス...
-
c言語でイベントフラグを使った...
-
C言語のことです。写真(見にく...
おすすめ情報
>apt-get install libc6-dev-i386
で32ビット版のパッケージをインストルーして、
>gcc -m32 examgdb.s
で実行すると上記と同じ結果になりました。