小编Nea*_*uis的帖子

如何在Mac OS X上运行自制的GDB版本?

我正在尝试使用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命令行工具已经过时了(请参阅gccgdb问题),我需要使用自己的自制版本.我不知道这些工具的设置中是否有我可能错过的东西.

我可以使用gdb从命令行调试,我遇到了同样的错误:"Could not find the frame base for "Class::method()"所以我很确定它不是Eclipse的问题.

是否有任何事情可能导致这个问题?

  • Mac OS X 10.8.5(Mountain Lion)
  • Eclipse 4.2.1(Juno)
  • GCC 4.8.2(家酿)(与-O0-g3)
  • gdb 7.6.2(自制和编码)

更新:

我也看到了这条线:

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)

c++ macos homebrew gcc gdb

20
推荐指数
1
解决办法
2399
查看次数

跟进:从python执行.sql文件

一年多以前,有人问过这个问题:执行.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)

python sql sql-server pyodbc python-db-api

7
推荐指数
1
解决办法
2万
查看次数

如何使用ERB查找模板文件的路径?

我使用嵌入式ruby(ERB)生成文本文件.我需要知道模板文件的目录,以便找到相对于模板文件路径的另一个文件.ERB中是否有一个简单的方法可以提供当前模板文件的文件名和目录?

我正在寻找类似的东西__FILE__,但给出模板文件而不是(erb).

ruby erb

7
推荐指数
1
解决办法
2698
查看次数

可以使用GDB在Fortran 90中打印派生类型的可分配数组的值吗?

我在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社区没有更好的免费调试器解决方案吗?

fortran gdb gfortran fortran90 derived-types

6
推荐指数
1
解决办法
1645
查看次数

在CMake中查找目录

问题:

我想在我的构建中添加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)

(这是我需要从库中获得的第一个文件)但是这给了我文件的完整路径,而不是包含命令中指定文件的整个前缀的目录的路径.

c++ boost build cmake

6
推荐指数
1
解决办法
2万
查看次数

将 CMake 项目添加到 Visual Studio 解决方案

我正在处理 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 自定义构建命令来做到这一点?

c++ cmake visual-studio

6
推荐指数
1
解决办法
5950
查看次数

使用CMake生成makefile的并行作业(无速度提升)

我一直在对我最近开始使用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)

fortran makefile cmake

5
推荐指数
1
解决办法
2993
查看次数

如何执行异步屏幕外查询?

为了对绘制的内容执行查询,我想渲染几个(可能是数千个)场景.我glGetQueryObjectiv()遇到的问题是调用是昂贵的,所以我想找到一种方法来提前渲染几个场景,同时我等待查询的结果可用.

我已经阅读了一些关于帧缓冲对象和像素缓冲对象的内容,但主要是在使用保存到文件的上下文中glReadPixels(),我无法找到在异步查询中使用这些对象中的任何一个的示例.是否有任何理由说明执行的设置与此示例中的glGetQueryObjectiv()不同(例如,我应该使用FBO还是PBO)?glReadPixels()

注意: 这不适用于图形应用程序.我感兴趣的只是GL_SAMPLES_PASSED查询的结果(即绘制了多少像素?).

具体应用是估计当其他表面投射阴影时阳光照射到表面的程度.如果您有兴趣,可以在这里阅读.

c++ opengl asynchronous

5
推荐指数
1
解决办法
283
查看次数

如何更改SLURM更新输出文件(stdout)的频率?

我正在使用SLURM在超级计算机上调度作业。我已经设置了--output=log.out将内容从作业的stdout放入文件(log.out)的选项。我发现文件每30-60分钟更新一次,这使我很难检查我的工作状态。

知道为什么更新文件需要这么长时间吗?有没有办法更改设置,以便更频繁地更新此文件?

使用SLURM 14.03.4-2

stdout slurm

5
推荐指数
1
解决办法
4025
查看次数

Anaconda没有更新到最新

最新版本的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版?

  • 在64位Windows 7上运行
  • Python 2.7.10 :: Anaconda 2.3.0(32位)

python anaconda conda

5
推荐指数
1
解决办法
2316
查看次数

使用 Homebrew 在 Mac OS X 上安装 GCC 构建的 boost 库

是否可以使用 Homebrew 安装使用 GCC(而不是 Clang)编译的 boost 库?

我曾尝试将 HOMEBREW_CXX 指向我的 Homebrew 版本的 GCC,但它似乎不起作用。

如果没有,我始终可以按照此答案中的建议修改配置文件:

如何使用指定的编译器安装 Boost(比如 GCC)

c++ macos homebrew gcc boost

3
推荐指数
1
解决办法
3250
查看次数

如何防止ipython笔记本中的单元格重叠

我一直在本地托管笔记本上工作一段时间没有任何问题.但是,我最近重新打开笔记本,发现我的所有单元格都重叠,如下图所示:

在此输入图像描述

如果我再次上下移动细胞,它们似乎正确地重新对齐.我能想到的唯一变化可能是因为我最近更新了我的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)

知道可能导致这种情况的原因吗?

系统信息:

  • Python 2.7.8 :: Anaconda 2.1.0(x86_64)
  • Mac OS X版本10.9.4
  • 谷歌浏览器版本39.0.2171.13 beta(64位)

python ipython-notebook anaconda

2
推荐指数
1
解决办法
331
查看次数

为什么不总是使用调试信息来构建发行版?

如果调试信息存储在程序数据库中(而不是作为可执行文件的一部分),那么有什么理由不总是与其一起构建(例如MSVC /Zi)?

在CMake中,默认配置为“发布”,“调试”,“ RelWithDebInfo”和“ MinSizeRel”。是否有理由不只使用“ Debug”和“ RelWithDebInfo”(也许重命名为“ Release”)?

它对代码的大小或性能有影响吗?gcc或clang的答案与Visual C ++的答案不同吗?

更新资料

我确实遇到了类似的这些帖子:

但是,这些都不涉及Release vs. RelWithDebInfo的问题。

是。我可以使用Release vs. RelWithDebInfo对可执行文件进行测试。那肯定会给我有关代码大小的答案,但是很难断定,如果我的测试用例显示出类似的性能,它对性能没有影响。我如何知道我是否行使了可能受到更改影响的语言方面?也就是说,经验测试可能会产生假阴性。

c++ debugging build cmake visual-c++

2
推荐指数
2
解决办法
2277
查看次数