小编Fan*_*Fox的帖子

除了.NET 3.5之外,不能在c#项目中命中断点

我刚刚将以前在VS2008中运行的解决方案升级.NET 3.5到VS2015上运行.NET 4.6.

有关该项目的一些信息

  1. 该解决方案只有一个项目,它Unit Test Project只是创建'AVTest.dll`,我们将其加载到NUnit中以对某些硬件执行某些功能测试.
  2. 我们不直接运行它,我们通过启动外部程序调试事件打开NUnit.exe .我们加载由c#build生成的.dll,NUnit能够运行一系列测试.通过以这种方式运行NUnit,我们过去能够在单元测试中调试例程.
  3. NUnit版本是2.5.10,它使用.NET 2.0(鉴于我们运行并打破.NET 3.5似乎这可能不是这样).我也升级了o最新稳定版的NUnit(2.6.4 .NET 3.5),没有任何变化.
  4. 我们没有启动项目 - 一切都通过NUnit运行.

所有东西都构建并正确运行但是在尝试设置断点时出现以下错误:

断点当前不会被击中.没有为此文档加载任何符号.

当我切换回.NET 3.5时,我能够在代码中设置断点.我能做到这一点的事实让我觉得我缺少一些关于.NET版本的简单,因为我不太熟悉c#.

我知道这个问题,并尝试了问题本身和答案第一页的所有内容.

关于如何检查没有加载符号的原因是否有任何进展?

一个新的发展

当我附加到已经运行的Nunit测试时,我能够正常调试.我不确定它为什么在运行后(通过启动外部程序)或者为什么在3.5而不是4.6中工作,但它可以被调试...

.net c# nunit breakpoints

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

#define TRUE!FALSE vs #define TRUE 1

撇开自从c99 stdbool.h已经存在的事实,在定义处理布尔类型的宏时C,以下是否有任何区别?

#define FALSE 0

#define TRUE 1       // Option 1 
#define TRUE !FALSE  // Option 2
Run Code Online (Sandbox Code Playgroud)

从这里的实例来看,它似乎没有什么区别.两种选择都有技术优势吗?(不包括第二个例子对c ++ bool对象更好的事实.)

c

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

使用不同配色方案的Matlab冲浪

我有一个地形图,我想表示一些数据.见下图:

在此输入图像描述

右边的区域由白色圈出,是与场地其余部分分开的冲浪功能.我希望能够做的是改变配色方案.外部应该是灰度级,内部应该是基于我与绘图分开的值的单一颜色.目前我已经尝试了色彩映射(灰色)功能然后改变,但这改变了整个情节.

我对有关不同绘图风格的建议持开放态度.plot3而不是冲浪.因此,我必须制作这两个冲浪的数据是x,y,z点的两个列表.

如果可能的话,我还想显示一个颜色条,它代表圆圈区域的颜色(由我根据外部值设置).

有谁知道这样做的好方法?

谢谢.

编辑:

我想做的是:

在此输入图像描述

图像的顶部不应有深蓝色.图像将随着更多的"蓝色"斑点不断更新,颜色应根据外部值进行更改,理想情况下,如果颜色重叠,它会将颜色与之前的点合并.

matlab visualization

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

使用matlab颜色方案将float转换为RGB

如果我有一个浮动,例如0.568(保证浮动0 -> 1).有没有办法在当前的matlab颜色方案(即普通,热,hsv等)下将其转换为RGB值(双精度[1.0, 1.0, 1.0]或整数[255 255 255])?

matlab colors

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

如何将matlab矢量转换为3D矩阵

我有一个矢量s,其大小1*163840来自 sizeX * sizeY * sizeZ = 64 * 40 * 60.我想将1*163840矢量转换为三维矩阵,其在x轴上为64,在y轴上为40,在z轴上为64.

转换它的最简单方法是什么?

matlab matlab-figure

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

Visual Studio无法识别Makefile项目中的GCC链接器错误

我们有一个交叉编译的visual studio Makefile项目.我们已经不得不引入类似于此解决方案来使其识别编译器错误.IE浏览器.我们引入了一个Perl脚本来解析GCC的输出并将其转换为Visual Studio将理解的形式.如果我们宣布:

int succ = thisRandomFunction(userPointer, 1, 1);
Run Code Online (Sandbox Code Playgroud)

如果没有定义thisRandomFunction那么我们将得到链接器错误:

1>  ./program.a(taskqueue.o): In function `TaskQueueAdd': 1> 
D:\Git\program\taskqueue.c(94,1) : undefined reference to `thisRandomFunction' 1>  
collect2: ld returned 1 exit status 1>  make: *** [program.exe] Error 1
Run Code Online (Sandbox Code Playgroud)

但是Visual Studio实际上并不认为这是一个错误.具有相同问题的Visual Studio C++控制台程序具有链接器错误:

1>  TestUndefinedReference.cpp
1>TestUndefinedReference.obj : error LNK2019: unresolved external symbol "int __cdecl something(int)" (?something@@YAHH@Z) referenced in function _main
1>D:\Projects\New folder\TestUndefinedReference\Debug\TestUndefinedReference.exe : fatal error LNK1120: 1 unresolved externals
Run Code Online (Sandbox Code Playgroud)

通过使用此转换器:

sub parseLinkerError
{
    my $str = $_[0]; …
Run Code Online (Sandbox Code Playgroud)

visual-studio-2015

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

分配给rvalue:为什么要编译?

在以下示例中:

class A {
  private: double content;

  public:
  A():content(0) {}

  A operator+(const A& other) {     
    content += other.content;
    return *this;
  }

 void operator=(const A& other) {
       content = other.content;
  }

};
Run Code Online (Sandbox Code Playgroud)

A是一个double的简单包装器,+并且=运算符已经过载.在以下用途中:

 int main(int argc, char *argv[]) {
    A a, b, c;
    (a+b) = c ; // Why is this operation legal?
}
Run Code Online (Sandbox Code Playgroud)

为什么(a+b) = c编译?我想知道为什么这个陈述是合法的,因为结果(a+b)必须是一个rvalue.我没有从中返回参考operator+.

c++ reference rvalue lvalue

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

混合数组和多态的编译器警告

在更有效的C++中,提出一个有趣的观点是混合数组和多态是一个坏主意.例如:

class Base {
    public:
    Base(int y) : a(y) {}
    int a;
};

class D : public Base {
    public:
    D(int w, int y) : Base(y), c(w) {}
    int c;
};

std::ostream& operator<<(std::ostream& os, const Base &obj )
{
    os << obj.a << std::endl;
    return os;
}

// This function will work perfectly well if i pass in a `Base` array, 
// but if i pass in `D` array we are going to run into some problems. 
// Namely that …
Run Code Online (Sandbox Code Playgroud)

c++ arrays polymorphism

5
推荐指数
0
解决办法
119
查看次数

在`unique_lock`,`scoped_lock`和`lock_guard`中指定的mutex_type的用例是什么?

用于保护std::mutex所有的c ++ 11互斥RAII类型都有一个typedef:

typedef Mutex mutex_type;
Run Code Online (Sandbox Code Playgroud)

这个成员typedef有什么意义?起初我认为它可以用来概括创建一个移动锁的对象(unique_lock例如):

template<SomeLock>
void function(SomeLock in)
    SomeLock::mutex_type newMutex;
    //Do something
Run Code Online (Sandbox Code Playgroud)

但我无法想象这个用途.

另外需要注意的是,它似乎并没有在实现中的任何地方使用locks(至少在VisualC++中没有).

会员的用例是mutex_type什么?

c++ multithreading mutex

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

为什么std :: condition_variable采用unique_lock而不是lock_guard?

std::condition_variable 在使用中如下:

std::condition_variable cv;
...
std::unique_lock<std::mutex> lk(m);
cv.wait(lk, []{return processed;});
Run Code Online (Sandbox Code Playgroud)

在我看来有一个有趣的问题.unique_lock可以推迟,它可以被交换掉.代码设计可能有许多其他原因,并不一定是错误的,它实际上并没有被锁定.例如.

std::unique_lock<std::mutex> lk(m, std::try_to_lock_t); // or  std::defer_lock_t
// Try to lock fails.
cv.wait(lk, []{return processed;});
Run Code Online (Sandbox Code Playgroud)

为什么不通过改变std::conditional_variable工作lock_guard来强制执行锁定的情况呢?然后你会很难进入这种情况.事实上,唯一的方法是这样做:

// m is not already locked
std::lock_gaurd<std::mutex> lk(m, std::adopt_lock);
cv.wait(lk, []{return processed;});
Run Code Online (Sandbox Code Playgroud)

而不是可用的多种方式unique_lock.是否有一个技术理由使用unique_locklock_guardcondition_variable

c++ multithreading thread-safety

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