我正在尝试使用gdb在Eclipse中调试C++程序.我认为它在我的main()函数中工作正常,但是在我尝试查看变量的值时,它会给我一个警告:
Failed to execute MI command:
-data-evaluate-expression variable
Error message from debugger back end:
Could not find the frame base for "Class::method()".`
Run Code Online (Sandbox Code Playgroud)
在搜索互联网之后,我很难理解这个错误的含义或找出如何解决问题.Stack Overflow 还有一些类似的问题(这里和这里).
由于Apple的Xcode命令行工具已经过时了(请参阅gcc和gdb问题),我需要使用自己的自制版本.我不知道这些工具的设置中是否有我可能错过的东西.
我可以使用gdb从命令行调试,我遇到了同样的错误:"Could not find the frame base for "Class::method()"所以我很确定它不是Eclipse的问题.
是否有任何事情可能导致这个问题?
-O0和-g3)更新:
我也看到了这条线:
BFD: /System/Library/Frameworks/CFNetwork.framework/Versions/A/CFNetwork(i386:x86-64): unknown load command 0x20
Run Code Online (Sandbox Code Playgroud)
接下来是几个警告:
warning: Could not open OSO archive file "/private/tmp/gcc48-KqoQ/gcc-4.8.2/build/x86_64-apple-darwin12.5.0/libstdc++-v3/src/../libsupc++/.libs/libsupc++convenience.a"
warning: …Run Code Online (Sandbox Code Playgroud) 一年多以前,有人问过这个问题:执行.sql文件,用于在python中的SQL Management Studio中运行.
我正在python中编写一个连接到SQL服务器的脚本,并根据大(几GB).sql文件中的SQL命令创建和填充数据库.
看起来SQLCMD需要下载并安装SQL Server Express.有没有其他方法从python执行.sql文件,而不需要使用我的脚本的每个人下载和安装SQL Server?pyodbc有这种能力吗?
编辑:
这是另一个类似的问题: 使用python MySQLdb执行*.sql文件
在这里,解决方案是从命令(在本例中为mysql.exe)调用实用程序,并将该文件作为参数列出.
在我看来应该有一种方法来使用Python的DB API库之一,但我还没有找到它所以我正在寻找像我可以用来运行文件的SQLCMD或MYSQL这样的*.exe从命令行.
PS如果我没有正确地看这个,请随时纠正我.也许下面的代码与从命令行运行一样有效:
for line in open('query.sql','r'):
cursor.execute(line)
Run Code Online (Sandbox Code Playgroud) 我使用嵌入式ruby(ERB)生成文本文件.我需要知道模板文件的目录,以便找到相对于模板文件路径的另一个文件.ERB中是否有一个简单的方法可以提供当前模板文件的文件名和目录?
我正在寻找类似的东西__FILE__,但给出模板文件而不是(erb).
我在Fortran90程序中有以下数据结构:
TYPE derivedType
CHARACTER(100) :: name = ' '
INTEGER :: type = 0
REAL(KIND(1.0D0)) :: property = 0.0
END TYPE derivedType
TYPE (derivedType), ALLOCATABLE, DIMENSION(:) :: arrayOfDerivedTypes
Run Code Online (Sandbox Code Playgroud)
当我尝试在GDB中调试和打印值时:
(gdb) p arrayOfDerivedTypes(1)%name
Run Code Online (Sandbox Code Playgroud)
我得到非敏感值(通常为零,正斜杠和字母串)或完全错误的值(如arrayOfDerivedTypes(1)%name = 9,当我知道它是= 2时).如何让GDB打印正确的值?
我知道:
我不想经历编译GDB的单独分支以测试它是否解决了这个问题的麻烦,如果有人已经知道它不会或者是否有更好的解决方案可用.
我很难想象还没有解决方案.fortran社区没有更好的免费调试器解决方案吗?
我想在我的构建中添加boost数字绑定作为include目录.这通常编译为:
c++ -I/where/you/want/to/install/it/include/boost-numeric-bindings
我从程序中引用的所有头文件都是相对于这个目录的,所以在CMake中我想找到这个目录(无论它安装在父系统上的哪个位置)并将其添加到include_directories.
像这样的东西:
find_directory(BNB_INCLUDE_DIR boost-numeric-bindings)
include_directories(${BNB_INCLUDE_DIR})
Run Code Online (Sandbox Code Playgroud)
但该find_directory命令不存在.我在这里错过了什么吗?
我试过了:
find_path(BNB_INCLUDE_DIR boost/numeric/bindings/traits/ublas_vector.hpp)
include_directories(${BNB_INCLUDE_DIR})
Run Code Online (Sandbox Code Playgroud)
(这是我需要从库中获得的第一个文件)但是这给了我文件的完整路径,而不是包含命令中指定文件的整个前缀的目录的路径.
我正在处理 Visual Studio 2013 项目,并希望将其链接到使用 CMake 生成构建配置的库。例如:
project
|-> src
|-> project.sln
|-> dep
|-> library
|-> src
|-> CMakeLists.txt
Run Code Online (Sandbox Code Playgroud)
当我在 Visual Studio 中构建项目时,有没有办法配置、构建我的库并将其链接到我的项目?
我想最终将整个项目变成一个 CMake 项目并生成一个全面的 Visual Studio 解决方案,但它目前相当庞大和复杂。由于时间有限,我想知道我最好的选择是什么。有没有一种干净的方法可以使用 VS 自定义构建命令来做到这一点?
我一直在对我最近开始使用CMake构建的项目进行一些测试.在转移到CMake之前,我注意到在使用我的手写Makefile -j选项时,构建时间有了显着改善make.
现在使用CMake我做同样的事情并且速度没有任何明显的增加.无论我是否运行-j,我都会获得四个进程make.exe,尽管其中只有一个正在为CPU时间计时,并且从不使用超过25%的CPU.
通常,CMake生成的Makefile比我手写的Makefile慢得多.快速测试显示带有和不带-j标志的CMake和手写makefile的构建时间:
CMake: "make -j all" = 7min
CMake: "make all" = 7min
Handwritten: "make -j all" = 2min
Handwritten: "make all" = 4min
Run Code Online (Sandbox Code Playgroud)
一般来说,CMake要慢得多,并且似乎不利用并行作业.
谁能解释为什么我没有看到任何改进?
(使用gfortran构建Fortran程序并使用CMake的自动检测依赖功能......虽然我不知道这是否与我所看到的相关).
这是我的CMakeLists.txt文件:
## CMake Version
cmake_minimum_required(VERSION 2.8)
## Project Name
project(PROJECT)
## Use FORTRAN
enable_language(Fortran)
## Release compiler options
set (CMAKE_Fortran_FLAGS_RELEASE "-O3 -cpp -ffree-line-length-none -fimplicit-none")
## Debug compiler options
set (CMAKE_Fortran_FLAGS_DEBUG "-g -cpp -ffree-line-length-none -fimplicit-none")
## Set directory for FORTRAN modules
set (CMAKE_Fortran_MODULE_DIRECTORY …Run Code Online (Sandbox Code Playgroud) 为了对绘制的内容执行查询,我想渲染几个(可能是数千个)场景.我glGetQueryObjectiv()遇到的问题是调用是昂贵的,所以我想找到一种方法来提前渲染几个场景,同时我等待查询的结果可用.
我已经阅读了一些关于帧缓冲对象和像素缓冲对象的内容,但主要是在使用保存到文件的上下文中glReadPixels(),我无法找到在异步查询中使用这些对象中的任何一个的示例.是否有任何理由说明执行的设置与此示例中的glGetQueryObjectiv()不同(例如,我应该使用FBO还是PBO)?glReadPixels()
注意: 这不适用于图形应用程序.我感兴趣的只是GL_SAMPLES_PASSED查询的结果(即绘制了多少像素?).
具体应用是估计当其他表面投射阴影时阳光照射到表面的程度.如果您有兴趣,可以在这里阅读.
我正在使用SLURM在超级计算机上调度作业。我已经设置了--output=log.out将内容从作业的stdout放入文件(log.out)的选项。我发现文件每30-60分钟更新一次,这使我很难检查我的工作状态。
知道为什么更新文件需要这么长时间吗?有没有办法更改设置,以便更频繁地更新此文件?
使用SLURM 14.03.4-2
最新版本的anaconda是2.5.当我输入:
conda update conda
conda update anaconda
Run Code Online (Sandbox Code Playgroud)
我明白了
# All requested packages already installed.
# packages in environment at C:\Users\<user>\Anaconda:
#
conda 4.0.5 py27_0
Run Code Online (Sandbox Code Playgroud)
和
# All requested packages already installed.
# packages in environment at C:\Users\<user>\Anaconda:
#
anaconda 2.3.0 np19py27_0
Run Code Online (Sandbox Code Playgroud)
分别.
如何让conda获得2.5版?
是否可以使用 Homebrew 安装使用 GCC(而不是 Clang)编译的 boost 库?
我曾尝试将 HOMEBREW_CXX 指向我的 Homebrew 版本的 GCC,但它似乎不起作用。
如果没有,我始终可以按照此答案中的建议修改配置文件:
我一直在本地托管笔记本上工作一段时间没有任何问题.但是,我最近重新打开笔记本,发现我的所有单元格都重叠,如下图所示:

如果我再次上下移动细胞,它们似乎正确地重新对齐.我能想到的唯一变化可能是因为我最近更新了我的anaconda包.控制台的所有输出对我来说都是正常的.
2014-10-10 08:22:45.531 [NotebookApp] Using existing profile dir: u'/Users/uname/.ipython/profile_default'
2014-10-10 08:22:45.535 [NotebookApp] Using MathJax from CDN: https://cdn.mathjax.org/mathjax/latest/MathJax.js
2014-10-10 08:22:45.726 [NotebookApp] Serving notebooks from local directory: /Users/uname/cwd
2014-10-10 08:22:45.727 [NotebookApp] 0 active kernels
2014-10-10 08:22:45.727 [NotebookApp] The IPython Notebook is running at: http://localhost:8888/
2014-10-10 08:22:45.727 [NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
2014-10-10 08:23:00.197 [NotebookApp] Kernel started: fa1fcfaf-c04f-4af0-a8da-6199a5e1d7ca
Run Code Online (Sandbox Code Playgroud)
知道可能导致这种情况的原因吗?
系统信息:
如果调试信息存储在程序数据库中(而不是作为可执行文件的一部分),那么有什么理由不总是与其一起构建(例如MSVC /Zi)?
在CMake中,默认配置为“发布”,“调试”,“ RelWithDebInfo”和“ MinSizeRel”。是否有理由不只使用“ Debug”和“ RelWithDebInfo”(也许重命名为“ Release”)?
它对代码的大小或性能有影响吗?gcc或clang的答案与Visual C ++的答案不同吗?
更新资料
我确实遇到了类似的这些帖子:
但是,这些都不涉及Release vs. RelWithDebInfo的问题。
是。我可以使用Release vs. RelWithDebInfo对可执行文件进行测试。那肯定会给我有关代码大小的答案,但是很难断定,如果我的测试用例显示出类似的性能,它对性能没有影响。我如何知道我是否行使了可能受到更改影响的语言方面?也就是说,经验测试可能会产生假阴性。