問題タブ [sbrk]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
63 参照

c - プログラムは最初の実行時にのみハングしますか?

gdb で低レベルの C プログラムをデバッグしようとしています。問題のプログラムは、ラッパーとして機能し、別のプロセスを起動し、そのメモリ使用を監視/干渉することを意図しています。

プログラムを gdb にロードすると、最初は (理想的ではないにしても) すべてが正常に見えます。新しいプロセス フォークが表示されますが、ハングします。それ自体は、それほど奇妙ではありません。コードのどこかでデッドロックまたは無限ループが発生している可能性があります。

しかし、gdb 内でプロセスを中断して強制終了し、同じ gdb セッション内で再度実行すると、すべてが完全に正常に動作します。実行には約 0.5 秒かかり、正確に動作します。

私の質問は次のとおりです。プログラムの実行間でgdbが保持しているのは何ですか? 1 回目と 2 回目の実行で何が変わるでしょうか。

0 投票する
1 に答える
376 参照

c - C - sbrk(size) は有効なポインターを返しますが、sbrk(0) は負の値です

割り当てのための私のコードは

sbrk(...) 関数は有効なアドレス (0x603021) を返しますが、gdb に入って sbrk(0) を出力すると、16 進値 0xffffffff8060341 が取得されます。計算を行った後、ポインター 0x8060341 は sbrk(0) であることがわかりました。先頭の文字 f (つまり 0xfffff...) はどこから来たのですか?

0 投票する
3 に答える
457 参照

c++ - 仮想メソッドが _sbrk への未定義の参照を生成するのはなぜですか?

これは正常にコンパイルされます。

これは、_sbrk への未定義の参照について不平を言っています:

仮想メソッドが への未定義の参照を生成するのはなぜ_sbrkですか?

私はそれvtableがどこかに静的に割り当てられ、必要ないと思っていmallocました。

コンパイラ:arm-none-eabi-gcc 8.0.0最近のnewlib. でコンパイル-fno-rtti -fno-exceptions -fno-unwind-tables

テストプログラム (bootのようなものmain):