Brewでgdb 8.1をインストールしました。
私はコードサインgdbと.gdbinitを以下のように持っています:
set startup-with-Shell off
。
SIP機能を無効にしました:
$ csrutil status
System Integrity Protection status: disabled.
しかし、gdbはまだ機能しません。
#include <iostream>
using namespace std;
int main() {
cout << "hello world!" << endl;
return 0;
}
コンパイルコマンド:
g++ -g test.cpp
gdb出力:
GNU gdb (GDB) 8.1
Copyright (C) 2018 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-Apple-darwin17.3.0".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos Word" to search for commands related to "Word"...
Reading symbols from a.out...Reading symbols from /Users/mypc/Downloads/a.out.dSYM/Contents/Resources/DWARF/a.out...done.
done.
(gdb) run
Starting program: /Users/mypc/Downloads/a.out
[New Thread 0x2503 of process 802]
[New Thread 0x2303 of process 802]
During startup program terminated with signal ?, Unknown signal.
(gdb)
Macosシエラでgdbを動作させるための正しい手順は何ですか?
これは、最新のgdb 8.1が原因です。gdbを8.0.1にダウングレードすると、この問題を解決できます。
brew unlink gdb
brew install https://raw.githubusercontent.com/Homebrew/homebrew-core/9ec9fb27a33698fc7636afce5c1c16787e9ce3f3/Formula/gdb.rb
brew pin gdb
を使用してgdbをアップグレードしないでください私の場合、8.0.1にダウングレードしても解決しませんでした。
しかし、次の手順は役に立ちました。
(再起動する代わりにgdbをテストし、正常に動作したため、手順12の「動作するかどうかを確認する」を挿入しました。手順12以降は実行しませんでした)
gdb-cert
)killall taskgated
codesign -fs gdb-cert /usr/local/bin/gdb
command-R
until Appleロゴが表示されます)csrutil enable --without debug
情報源:
Pre Sierra: https://Gist.github.com/hlissner/898b7dfc0a3b63824a70e15cd0180154
Sierra: https://Gist.github.com/gravitylow/fb595186ce6068537a6e9da6d8b5b96d
私はmacOS 10.13.6を使用していますが、「(gdbがコード署名されていることを確認してください-taskgated(8)を参照)」という同じ問題がありました...
GDBを8.2.1から8.0.1にダウングレードし、gdb-certを再度作成して署名すると、正常に機能しました。
Eclipseのデバッガーでgdbのパスを8.2.1から8.0.1に変更することを忘れないでください。再起動すると動作します。