gpt4 book ai didi

debugging - gdb可以单步执行某些opencv函数,但不能单步执行其他opencv函数

转载 作者:太空宇宙 更新时间:2023-11-03 21:12:00 25 4
gpt4 key购买 nike

我想在 opensuse 13.1 下用 gdb 调试 Opencv:

我可以进入一些函数,比如imshowwaitKey,但是我不能进入其他函数,比如imreadnamedWindow,它显示:

29          image = cv::imread(name);
(gdb) s
std::allocator<char>::allocator (this=0x7fffffffdc7f)
at /usr/src/debug/gcc-4.8.1-20130909/obj-x86_64-suse-linux/x86_64-suse-linux/libstdc++-v3/include/bits/allocator.h:113
113 allocator() throw() { }

这是我的步骤:

test4.cpp:

#include <stdio.h>
#include <opencv2/opencv.hpp>

using namespace cv;

int main(int argc, char** argv )
{

Mat image;
image = imread( "LinuxLogo.jpg", 1 );

if ( !image.data )
{
printf("No image data \n");
return -1;
}
namedWindow("Display Image", CV_WINDOW_AUTOSIZE );
imshow("Display Image", image);

waitKey(0);

return 0;
}

我的生成文件:

OpencvDebugLibDir=/home/ry/lib
CFLAGS=-g -I$(OpencvDebugLibDir)/include/opencv -I$(OpencvDebugLibDir)
LIBS=$(OpencvDebugLibDir)/lib

test4:test4.cpp
g++ $(CFLAGS) -o $@ $< -L$(LIBS) -lopencv_highgui -lopencv_core -Wl,-rpath=/home/ry/lib/lib

运行 gdb:

gdb test4 -d /home/ry/learn/opencv/install/OpenCV/opencv-2.4.9/modules/core/src -d /home/ry/learn/opencv/install/OpenCV/opencv-2.4.9/modules/highgui/src

最佳答案

您应该在 gdb 提示符下完成并再次步骤

这是因为当你第一次进入时,你进入的是std::string构造函数代码(它是imread的第一个参数)。这不是您想要的,因此只需执行完当前帧再进入一步。请注意,此过程可能会在同一行代码中多次发生,具体取决于函数的参数以及您传递它们的方式。

关于debugging - gdb可以单步执行某些opencv函数,但不能单步执行其他opencv函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26571789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com