我正在尝试调试作业程序中的段错误,我发现我的 GDB 甚至无法再打印 std::strings。我该如何解决?
我在 Ubuntu 18.04 LTS 上。
CLang++ 版本:
$ clang++ --version
clang version 6.0.0-1ubuntu2 (tags/RELEASE_600/final)
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
Run Code Online (Sandbox Code Playgroud)
GDB版本:
$ gdb --version
GNU gdb (Ubuntu 8.1-0ubuntu3.1) 8.1.0.20180409-git
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. …
Run Code Online (Sandbox Code Playgroud) 如果您为 CCD 以非本机方向拍摄 JPEG 图片,大多数相机都不会费心旋转原始图像。他们只是(懒惰地)修改 EXIF 元数据中的 Orientation 值并让图像查看器处理它。您可以通过安装 ExifTool(通过 APT)并运行exiftool -Orientation -n image.jpg
. (这将为您提供在数据中找到的原始数值,对于人类可读的输出,请删除-n
.)
是否有 Ubuntu/Linux 工具或方法来修改 JPEG 图像,以便在 EXIF 方向值设置为 1 时将原始图像旋转到正确的方向?
对于一个家庭作业,我试图创建自己的版本std::find
,std::begin
,std::end
,和std::size
。
我写了一些看起来像这样的代码:
#include <vector>
template <typename I, typename T>
I find(const I& beg, const I& end, const T& sought)
{/* ... */}
template <typename T, size_t S>
T* begin(T (&a)[S])
{return &a;}
template <typename T, size_t S>
T* end(T (&a)[S])
{return &a + S;}
template <typename T, size_t S>
constexpr size_t size(T (&)[S])
{return S;}
int main()
{
std::vector<int> vec = {0, 1, 2, 3};
// ...
// test not-found case (and …
Run Code Online (Sandbox Code Playgroud)