相关疑难解决方法(0)

如何分析在Linux上运行的C++代码?

我有一个在Linux上运行的C++应用程序,我正在优化它.如何确定代码的哪些区域运行缓慢?

c++ unix profiling

1732
推荐指数
12
解决办法
49万
查看次数

gtest:在哪里放置 gdb 断点

我多年来一直在使用各种 xunit 测试(从 2000 年代初的 cppunit 开始)。在所有情况下,在失败时设置断点都很容易:有一个函数指示检测到的失败:

b 'atf::tests::tc::fail(std::string const&)' 命令向上 1 结束

看起来 gtest 是相当不同的,对 gtest 做同样的事情的既定做法是什么?

gdb googletest

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

为什么链接器找不到静态库中存在的符号?

这是一个相当简单的应用程序的设置,我无法正确链接.基本上是单个源文件main.cpp,带有静态库的目录libbreakpad_client.a,以及库中的标头breakpad.

$ ls .
main.cpp libs breakpad
$ ls libs
libbreakpad_client.a
Run Code Online (Sandbox Code Playgroud)

以下是Google Breakpad文档中main.cpp逐字记录的来源.

#include "client/linux/handler/exception_handler.h"

void crash()
{
  volatile int* a = (int*)(NULL);
  *a = 1;
}

static bool dumpCallback(const google_breakpad::MinidumpDescriptor& descriptor, void* context, bool succeeded)
{
  printf("Dump path: %s\n", descriptor.path());
  return succeeded;
}

int main()
{
    google_breakpad::MinidumpDescriptor descriptor("/tmp");
    google_breakpad::ExceptionHandler eh(descriptor, 0, dumpCallback, 0, true, -1);
    crash();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试编译它时,链接器抱怨它无法找到ExceptionHandler构造函数和析构函数.

$ g++ -Ibreakpad/src -lbreakpad_client -Llibs -o main main.cpp …
Run Code Online (Sandbox Code Playgroud)

c++ linker static-libraries

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

标签 统计

c++ ×2

gdb ×1

googletest ×1

linker ×1

profiling ×1

static-libraries ×1

unix ×1