問題タブ [libc]
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.
php - dlsymによるライブラリの介入
open()、close()、connect()などのlibc内のいくつかのライブラリ関数の使用状況を追跡するために、介入ライブラリを作成しています。これは、ほとんどのアプリケーションで一般的にうまく機能します。ただし、特にPHPのMySQLモジュールを使用してPHPで試してみると、このモジュール内のlibcへの関数呼び出しは追跡されません(したがって、connect()、socket()などはありません)。'strace'は、システムがsocket()、connect()などを呼び出すことを教えてくれました。モジュールとlibmysqlclient.so.16.0.0で「file」を実行すると、それらはすべて動的にリンクされていると言われました。したがって、静的リンケージによって引き起こされる問題ではないはずです。何が問題なのでしょう?
Fedora1164ビットバージョンを使用しています。
ありがとうございました。
c - 標準ライブラリ itoa 関数
私はインターネットで検索し、itoa() 関数を使用する多くのコードを見ました & 彼らはこの関数が stdlib.h にあると主張しました
現在、GCC の 2 つのバージョンを使用しています。
(GCC) 4.2.4 (Ubuntu 4.2.4-1ubuntu4))
(GCC) 4.1.2 20080704 (レッドハット 4.1.2-44)
どちらも itoa() 関数を持っていません (プログラムをコンパイルしてエラー: `itoa' への未定義参照)。
何か案は?ありがとう。
debugging - Mac OS X で、ソース レベルのデバッグ用に System/LibC のデバッグ ビルドを取得するにはどうすればよいですか?
opensource.apple.com から LibC ソースをダウンロードしましたが、これは 1 つのモノリシック ライブラリ /usr/lib/libSystem.B.dylib の一部であるため、どうにかして全体を再構築する必要がありますか?
Linux から移植された BSD コマンド ライン プログラムがあります。LibC 関数にブレークポイントを設定してステップスルーできるようにしたい。プログラムのヒープ破損のように見えるものに近づこうとしています(Linuxでは発生しません-すでにLinuxに移植して、そこでmemcheckを実行しています。)
c - 失敗したmalloc()のユニットテスト
失敗したコードパスをユニットテストするための最良の方法は何malloc()
ですか?ほとんどの場合、あなたが次のようなことをしているので、それはおそらく問題ではありません
ただし、場合によっては、キャッシュなどに余分なものを割り当てて、そのメモリを再利用できるため、死ぬ以外の選択肢があります。
malloc()
ただし、コードパスでトリッキーでエラーが発生しやすいことを実行しているという失敗からの回復を試みることができる場合は、テストが特に重要になります。実際にこれをどのように行っていますか?
iphone - 混乱とlibcのリンク
アプリケーションに対してリンクされた.aファイルにコンパイルされたライブラリがあります。(iphone、Xcodeで開発)
すべてが正常で、リンクは成功しているようですが、プログラムを実行するとクラッシュします。クラッシュのポイントは、静的にリンクされたライブラリのmemcmp()呼び出しです。デバッガーは、名前に「dyld」が含まれるすべての種類のものを表示するため、何らかの理由でmemcmpを解決できず、ダイナミックライブラリの検索を開始してから失敗するようです。
AFAIK memcmpはlibcにあるため、問題にはなりません。(リンカーに-lcを渡そうとしましたが、期待どおりに機能しませんでした)
それで、それはどのように機能することになっていますか?静的にリンクされたライブラリがlibcの何かを使用できないのはなぜですか?どのようにコンパイルすればよいですか?
ありがとうございました
c - C で独自の printf() を作成するには?
実際、私はprintf()
varag を使用して C で独自のものを作成しようとしています。しかし、私はこれに対する正しい解決策を得ていません。誰でも私を助けることができますか?
assembly - アセンブリセグメンテーション違反
次のアセンブリコードの実行中にエラーが発生しました
Cライブラリの一部でセグメンテーション違反が発生しましたCalling:callprintfx86_64モードで実行されています。cライブラリに関してx64コードのコンパイル中に見逃したものはありますか?または、コードに何か問題がありますか
ありがとう
c++ - libc-dbgおよびlibc-profとのリンク
libcの複数のバージョンをインストールしましたが、コンパイル時にリンクするバージョンを選択するにはどうすればよいですか?
今、私は次のようにコンパイルしています
documentation - libcのソースコードをオンラインで閲覧できる場所(doxygenなど)
stdlibで関数の実装を調べたい場合があります。ソースコードをダウンロードしましたが、かなり面倒です。
ヒット数が多いため、grepingだけではあまり適していません。
ドキュメントがあるウェブページのdoxygenスタイルを知っている人はいますか?
Linuxカーネルについても同じことが言えます。
ありがとう
c - Cのfgets()関数
バッファオーバーフローのために取得せずにfgetsを使用するように誰もが私に言ったことを知っています。ただし、の3番目のパラメータについて少し混乱していますfgets()
。私が理解しているように、fgetsは以下に依存しています。
char* str
入力が保存される場所へのptrです。
num
読み取る文字の最大数です。
しかし、何FILE *stream
ですか?ユーザーに文字列(文など)の入力を求めるだけの場合は、「stdin
」と入力するだけでよいですか?
そして、私FILE *stdin
は上部、近くに入力する必要がありmain()
ますか?