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で質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) x86_32のGASの擬似命令 3 2023/06/07 19:55
- C言語・C++・C# C言語初心者 ポインタについて、お助けください、、 2 2023/03/15 23:50
- PHP 配列の値の更新方法について 1 2022/08/05 09:49
- C言語・C++・C# C++プログラミングコードにポリモーフィズムを取り入れ方を教えてください。 2 2023/06/09 11:17
- Excel(エクセル) VBA フォルダ見える化のコードについて 2 2023/06/19 15:04
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- PHP カラーミーショップのSmartyでの文字列抜き出し 2 2022/05/06 11:51
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- その他(プログラミング・Web制作) python の課題で困ってます。 num=【1,2,8,6】という配列がある。 insert(2, 2 2023/05/24 21:56
- その他(プログラミング・Web制作) pythonで変数にオブジェクトを代入するにはどうしたらよいでしょうか 2 2023/08/20 20:36
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
mallocについて
-
へんな現象
-
C#,vb.netで業務用アプリ開発と...
-
インクリメント演算子のみを用...
-
C言語をコンパイルするとコンピ...
-
gccを行ってもexeファイルが生...
-
プログラミングについての質問...
-
double型が正常に認識されてい...
-
C言語の関数と配列に関する質問
-
Linux Cプログラミングを学ぶた...
-
C言語 配列と関数の練習問題
-
Bitcoin、BTCはブロックチェー...
-
Linuxでの開発環境構築や設定の...
-
これなにがちがうんですか??
-
C言語 バッファについて。
-
双方向リスト
-
応用情報技術者試験の令和元年...
-
システムエンジニアの適正について
-
どちのほうがすきですか?
-
Notepad++の関数リスト表示の変...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語 配列と関数の練習問題
-
システムエンジニアの適正について
-
[C言語]fputsとfprintfの違い
-
C言語をコンパイルするとコンピ...
-
mallocについて
-
どちのほうがすきですか?
-
ArduinoのジャイロモジュールMP...
-
大量のデータを読み込んで表示...
-
gccを行ってもexeファイルが生...
-
VisualStudio2022でC言語プログ...
-
C言語 列挙型(enum型)変数について
-
こんなことてしますか??
-
C言語の関数と配列に関する質問
-
Linuxでの開発環境構築や設定の...
-
質問失礼します。 プログラム言...
-
MACで動く実行ファイルをWindow...
-
WindowsのCapsLock(キャップス...
-
これなにがちがうんですか??
-
卒業研究でよく分からないとこ...
-
gcc13.2のバグ?
おすすめ情報
>apt-get install libc6-dev-i386
で32ビット版のパッケージをインストルーして、
>gcc -m32 examgdb.s
で実行すると上記と同じ結果になりました。