問題タブ [nm]
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.
linux - nm と「readelf -s」
libtest.so という名前の共有ライブラリがあり、その中に「foo」という関数が 1 つあるとします。
ストリップを使用して libtest.so からすべてのシンボルを破棄します
だから、今私たちが使用する場合:
印刷されます:
nm: libtest.so: シンボルなし
しかし、使用する場合:
foo 関数は、その結果からまだ見ることができます:
...
10: 000005dc 5 FUNC グローバルデフォルト 12 _Z3foov
...
コマンド文字列を使用して確認することもできます。
...
_Z3foov
...
ここに私の質問があります.なぜ nm は縞模様の libtest.so に対して結果を出さないのですか?
ありがとう
mysql - SQL n:m 継承結合
グループ間の n:m 関係を含むテーブルに参加したいと考えています。(グループは別の表で定義されます)。このテーブルには、member_group_id と parent_group_id をリストするエントリのみがあります。
この構造を考えると:
「ベース」クエリは次のようになります。
「ベース」クエリはすべての関係を正しく表示します (手動で確認しました)。
問題は、このクエリに where 句を適用して特定のグループを「起点」(すべての親グループが必要な最初のグループ) としてフィルタリングしようとすると、最も近い親のみが返されることです。たとえば、次のようにします。
誰でもこれを修正する方法を教えてもらえますか? または、これを実現するための別のアプローチ。(サーバー側の C++ ソース コードでいつでもこれを行うことができると思いますが、アプリケーション サーバーに大きな成長の可能性があるテーブル全体を転送する必要があります。)
アップデート:
記入ミス確定。今、私は継承期間の最初のレベルを過ぎていません。それを指摘してくれてありがとう。
UPDATE2: 期待される結果
期待される結果:
ID
ios - Mac で nm を使用してシンボル リストを表示する場合、$ld$add$os10.4$ プレフィックスは何を意味しますか?
iPhone アプリが iPhone シミュレーターにリンクしないという問題が発生しています。未定義のシンボルがあることがわかります:
しかし、これらは、私がリンクしているフレームワークのObjective -C クラスの名前のように見えます。掘り下げたいと思ったので、nmを使用して、リンクしているフレームワークのシンボルリストを調べました。例えば
さて、このシンボル リストは、リンカーが探しているクラスをフレームワーク アーカイブがエクスポートしているように見えます。唯一異なるのは、この $ld$add$os10.4$ プレフィックスです。なぜそこにあるのか、それが何を意味するのか、そしておそらくそれが私の問題を引き起こしているのでしょうか?
編集:これは私の問題だったようです: iPhoneSimulator をターゲットにするときの Xcode のリンク エラー
つまり、コンパイラ フラグ -fobjc-abi-version=2 を省略すると、異なるシンボル名が付けられます。
c++ - nmシンボル値でのオフセット?
コンテキストを説明するために、私が達成しようとしていることは次のとおりです。.soファイル自体にバージョン文字列を含めるために、共有オブジェクトファイルにconstchar*を埋め込みます。私はデータ分析を行っていますが、この文字列を使用すると、どのバージョンのソフトウェアがデータを生成したかをデータに知らせることができます。これはすべて正常に機能します。
私が抱えている問題は、.soライブラリから文字列を直接読み取ろうとしたときです。使ってみました
取得します
これはすべて問題なく、期待どおりです(char *は_SMPselection_version_infoと呼ばれます)。ただし、ファイルを開いて0x3d968を探し、文字列の読み取りを開始できると期待していましたが、取得するのはゴミだけです。
.soファイルを開いて、文字列の内容を検索すると(文字列の開始方法はわかっています)、アドレス0x2e0b4で見つけることができます。このアドレスでは、ゼロが終了し、期待どおりにそこにあります。(私は今のところこの方法を使用しています。)
私はコンピューター科学者ではありません。nmで示されるシンボル値が正しくない理由、または別の方法で、シンボルのアドレスでない場合のシンボル値は何であるかを誰かに説明してもらえますか?
(ちなみに私はOSX 10.7を搭載したMacで作業しています)
gdb - GDB CallStack アドレスは仮想か物理か?
私のgdbbt
コールスタックは、関数名に関数アドレスを付けます。次にnm binary
、関数名とアドレスのマッピングを実行して生成しました。gdb アドレスとnm
出力を一致させようとしたところ、一致しませんでした。関数のアドレス(gdb) bt
が高すぎる (物理アドレスのように見える)。
gdb 関数アドレス (例0x00007fffe6fc150f
):
しかし、nm
取得したバイナリからアドレスを実行すると、次のようになります
マシンは 64 ビットです。
私が知っているように、gdb は仮想アドレスのみを表示します。しかし、なぜそれが非常に高くなり、アドレスの現在のnm出力と一致しないのかわかりません
gdb アドレスは仮想アドレスですか??。nm
o/p は 000000000 から始まるため、実際の仮想アドレスのように見えます。しかし、なぜベースアドレスが自動的に追加されるのでしょうか?
注:サンプルtest.outで試しました。それはうまくいきます。コールスタック アドレスは仮想アドレスであり、シンボル出力bt
と完全に一致します。nm a.out
shell - need to output binary names to a file/stdout based on symbol table information
I have a file which contains some binaries. I am trying to use nm
on these binaries to search for an object file.
My problem is, I want to output only those binaries from this file (executables.out) that contain the required symbols. Any idea how to do that?
c - nm シンボル ユーティリティ レポート
nmコマンドは、シンボルがUとTの両方であると報告します。Uは未定義を表し、シンボルは別のライブラリにありますが、Tはどういう意味ですか?
0000018c T _myfunc U _myfunc
foreign-keys - TYPO3 バージョンの同じテーブルでの双方向 n:m リレーション。4.7.2
私たち自身の拡張では、それ自体に対して n:m の関係を持つべきテーブルがあります。
比喩的な例を示します (実際のケースはそれに似ています): テーブルを 'employee' と呼びましょう。
これで、従業員を他の従業員に関連付けることができます。たとえば、従業員 A を編集して従業員 B に関連付けます。従業員 BI を開くと、彼が従業員 A に関連付けられていることを確認したいと考えています。
tca.php で次の構成を試しました。
ただし、これを行うと、一方向の関係のみが保存されます。つまり、従業員 A には、従業員 B との関係があることがわかります。しかし、従業員 BI を開くと、従業員 A との関係は表示されません。
データベースでは、1 つのエントリが次のように保存されました。
- uid_local: ###従業員 A### の UID
- uid_foreign: ###従業員 B### の UID
- 並べ替え: 0
- sorting_foreign: 1
私は何を間違っていますか?Google/Internet で同様のケースを見つけることができませんでした。見つかったのは 2 つの異なるテーブルだけでした。
objective-c - nm コマンドから実行可能シンボルを隠す
nmコマンドは、実行可能ファイル内のすべてのシンボルを一覧表示します。これは、リバース エンジニアリングやクラッカーにとって良いガイダンスです。それらを隠したい。gccにはこの目的のためのスイッチがあるかもしれませんが、私は gcc を使用しません。それらをバイナリファイルから直接隠す方法はありますか?
ありがとう。
c++ - NMによってユーザー定義変数のみを出力することは可能ですか?
nmの出力には多くのシステム変数があり、次のようになります
ユーザー定義の変数(この場合はvariable10、variable0、Dictionary :: variable1、Dictionary :: variable4、N)のみを出力することは可能ですか?