这是我的第一篇文章,所以如果我发布任何错误或格式不正确,我提前道歉。
我的系统:运行 MacOS Mojave 10.14.1、Netbeans 8.2 的 MacBook Pro
我正在运行一个打印 hello world 的简单 C++ 程序:
int main(int argc, char** argv) {
cout << "Hello World" << endl;
return 0;
}
所以我的问题是我无法使用 Netbeans 或终端命令在我的 MacBook 上运行调试器。每次我这样做,我都会收到以下错误:
not in executable format: file format not recognized
我最初遇到的问题是缺少调试器命令。我按照指示 here安装 Homebrew,获取 gdb,并对 gdb 二进制文件进行代码签名。毕竟,我开始收到上面突出显示的错误。
我用谷歌搜索这个新问题,我找到了this stack overflow post这表明我在构建 64 位时可能正在运行 32 位 gdb。然而,基于运行 gdb 时的输出:
GNU gdb (GDB) 8.2
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-darwin18.0.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"...
BFD: /Users/Anon/Desktop/gdb_test/gdb_test: unknown load command 0x32
BFD: /Users/Anon/Desktop/gdb_test/gdb_test: unknown load command 0x32
"/Users/Anon/Desktop/gdb_test/gdb_test": not in executable format: file format not recognized
以及GDB的配置:
This GDB was configured as follows:
configure --host=x86_64-apple-darwin18.0.0 --target=x86_64-apple-darwin18.0.0
--with-auto-load-dir=:${prefix}/share/auto-load
--with-auto-load-safe-path=:${prefix}/share/auto-load
--with-expat
--with-gdb-datadir=/usr/local/Cellar/gdb/8.2/share/gdb (relocatable)
--with-jit-reader-dir=/usr/local/Cellar/gdb/8.2/lib/gdb (relocatable)
--without-libunwind-ia64
--without-lzma
--without-babeltrace
--without-intel-pt
--disable-libmcheck
--without-mpfr
--with-python=/System/Library/Frameworks/Python.framework/Versions/2.7
--without-guile
--with-separate-debug-dir=/usr/local/Cellar/gdb/8.2/lib/debug (relocatable)
("Relocatable" means the directory can be moved with the GDB installation tree, and GDB will still find it.)
看来我的 GDB 确实是 64 位的,所以我猜这不是问题所在。我还找到了this post最上面的答案表明 gdb 8.2 不可能被破坏,我应该降级到 8.0.1。然而,一个编辑说 GNU 团队的更新已经(据说)解决了这个问题,所以我运行:
brew update
并确保一切都是最新的,但我仍然遇到同样的错误。
我已经无计可施了,我已经花了太多时间来尝试解决这个问题。如果无法修复,您能否建议其他无忧方法(非常强调无忧)我可以在我的 Mac 上调试 C/C++ 程序吗?否则,我会留在我大学的计算机实验室。
编辑:这是我从终端编译的方式
g++ -g main.cpp -o main
我正在 Netbeans 中使用 g++ 编译器以 C++14 标准在 Debug模式(64 位)下进行编译。
我在编译后通过写入终端调用 gdb:
gdb main
或者简单地使用 Netbeans 中的 GUI
最佳答案
macOS 上的编译器令人困惑。 Apple 将 LLVM 编译器作为 Xcode 的一部分提供,但它在 /usr/bin/g++ 处提供了一个 stub ,这让人们相信他们正在使用 GCC,即 GNU Compiler Collection。然后他们尝试使用 gdb,即 GNU Debugger 和 LLVM 生成的可执行文件,但发现它不起作用。
恕我直言,您要么需要完全使用 Apple 提供的工具,要么完全使用 GNU 提供的工具。
那么,让我们看看第一个选项 - 使用 Apple 工具。在这种情况下你编译:
/usr/bin/g++ -g main.cpp -o main
并调试:
/usr/bin/lldb ./main
调试器命令看起来与 GDB 非常相似。
第二个选项是使用 GCC 和 GDB,它们通常最好使用 homebrew 安装。安装命令为:
brew install gcc
brew install gdb
然后你会用类似的东西编译:
/usr/local/bin/g++-8 -g main.cpp -o main
并用类似的东西调试:
/usr/local/bin/gdb ./main
但是,我暂时无法让它在 macOS Mojave 上运行!我读了here GDB v8.1 在 macOS 上不起作用,您需要安装 v8.0.1,但似乎无法使用 homebrew 来安装。
关于c++ - 无论我尝试了什么,GDB 都无法在我的 Mac (Mojave) 上运行。常见错误,但我找不到解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53353845/
总的来说,我对ruby还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用
大约一年前,我决定确保每个包含非唯一文本的Flash通知都将从模块中的方法中获取文本。我这样做的最初原因是为了避免一遍又一遍地输入相同的字符串。如果我想更改措辞,我可以在一个地方轻松完成,而且一遍又一遍地重复同一件事而出现拼写错误的可能性也会降低。我最终得到的是这样的:moduleMessagesdefformat_error_messages(errors)errors.map{|attribute,message|"Error:#{attribute.to_s.titleize}#{message}."}enddeferror_message_could_not_find(obje
在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/
exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby中使用两个参数异步运行exe吗?我已经尝试过ruby命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何rubygems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除
我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r
我的瘦服务器配置了nginx,我的ROR应用程序正在它们上运行。在我发布代码更新时运行thinrestart会给我的应用程序带来一些停机时间。我试图弄清楚如何优雅地重启正在运行的Thin实例,但找不到好的解决方案。有没有人能做到这一点? 最佳答案 #Restartjustthethinserverdescribedbythatconfigsudothin-C/etc/thin/mysite.ymlrestartNginx将继续运行并代理请求。如果您将Nginx设置为使用多个上游服务器,例如server{listen80;server
Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/
我遵循MichaelHartl的“RubyonRails教程:学习Web开发”,并创建了检查用户名和电子邮件长度有效性的测试(名称最多50个字符,电子邮件最多255个字符)。test/helpers/application_helper_test.rb的内容是:require'test_helper'classApplicationHelperTest在运行bundleexecraketest时,所有测试都通过了,但我看到以下消息在最后被标记为错误:ERROR["test_full_title_helper",ApplicationHelperTest,1.820016791]test
我是rails的新手,想在form字段上应用验证。myviewsnew.html.erb.....模拟.rbclassSimulation{:in=>1..25,:message=>'Therowmustbebetween1and25'}end模拟Controller.rbclassSimulationsController我想检查模型类中row字段的整数范围,如果不在范围内则返回错误信息。我可以检查上面代码的范围,但无法返回错误消息提前致谢 最佳答案 关键是您使用的是模型表单,一种显示ActiveRecord模型实例属性的表单。c
我正在尝试编写一个将文件上传到AWS并公开该文件的Ruby脚本。我做了以下事情:s3=Aws::S3::Resource.new(credentials:Aws::Credentials.new(KEY,SECRET),region:'us-west-2')obj=s3.bucket('stg-db').object('key')obj.upload_file(filename)这似乎工作正常,除了该文件不是公开可用的,而且我无法获得它的公共(public)URL。但是当我登录到S3时,我可以正常查看我的文件。为了使其公开可用,我将最后一行更改为obj.upload_file(file