在MSVC中,DebugBreak()或__debugbreak导致调试器中断.在x86上它相当于写"_asm int 3",在x64上它是不同的东西.在使用gcc(或任何其他标准编译器)进行编译时,我也想进入调试器.是否存在平台无关功能或内在功能?我看到了XCode的问题,但它似乎不够便携.
旁注:我主要想用它来实现ASSERT,我知道我可以使用assert(),但我也想在代码中编写DEBUG_BREAK或其他东西.
我试图使用TestDriven.Net不仅测试我的代码,而且调用我的代码上的函数,其目的是将代码的内部状态打印到Debug窗口.
这是我正在尝试做的一个非常简单的例子.
<TestFixture()> _
Public Class UnitTest
<Test()> _
Public Sub TestDebug()
Dim oClass1 As New Class1
Assert.AreEqual(True, oClass1.IsTrue)
Debug.WriteLine("About to call .PrintDebug()")
oClass1.PrintToDebug()
End Sub
End Class
Public Class Class1
Private _IsTrue As Boolean = True
Public ReadOnly Property IsTrue() As Boolean
Get
Return _IsTrue
End Get
End Property
Public Sub PrintToDebug()
Debug.WriteLine("Internal state of Class1: " & _IsTrue)
End Sub
End Class
Run Code Online (Sandbox Code Playgroud)
我正在尝试测试Class1的Public接口,并以某种方式查看Class1.PrintToDebug()函数的输出.
我查看了TestDriven.Net快速入门,其中显示了Debug.WriteLine在单元测试中使用的示例,但奇怪的是这对我来说也不起作用 - 即我的'Test'窗口中唯一的输出是:
------ Test started: Assembly: ClassLibrary1.dll ------ …Run Code Online (Sandbox Code Playgroud) 我只想要一个自某个日期以来已添加的文件列表(不是那些已被修改的文件).是否有捷径可寻?
答:这是最终为我工作的,谢谢你们!
svn log -v -r {2008-10-1}:HEAD svn://path.to.repo/ | grep"^ A"| grep".java"| 排序-u
我正在研究改进一组动画师使用的备份过程.目前,他们手动将其工作备份到外部硬盘驱动器或DVD中,并获取所有内容的完整副本.数据由数千个高分辨率图像,各种视频编辑软件和声音文件的项目文件组成.基本上一切都是二进制数据,任何东西都不应该在签入时合并.
我是否应该调查我将用作软件开发人员的版本控制系统(Subversion,GIT等),还是有一类用于非SW数据的版本控制系统能够更好地满足这些需求?
Eclipse中的清理规则(首选项> Java>代码样式>清理)通常可以很好地工作并创建漂亮的代码.
但有时候,特别是对于注释和连接的字符串片段(如内联SQL查询),清理只是搞砸了,并破坏了我的格式.
有没有办法对Eclipse说"不要触摸这个文本块!我已经按照我喜欢的方式对其进行了格式化,你会让它变得不那么可读"?
我有一个WPF窗口,其中有一个控件主机框架.在那个框架中,我显示不同的页面.有没有办法只对一个页面进行对话模式?当我显示对话框时,不应该单击页面上的任何控件,但应该可以单击页面上不在同一窗口上的控件.
作为一名C++开发人员,Java和.NET中缺少RAII(资源获取是初始化)一直困扰着我.清理的责任从班级作者转移到其消费者(通过try finally.NET的using构造)这一事实似乎显然是劣等的.
我明白为什么在Java中不支持RAII,因为所有对象都位于堆上,而垃圾收集器本身并不支持确定性破坏,但在.NET中引入了values-types(struct)我们有(看似) RAII的完美候选人.在堆栈上创建的值类型具有明确定义的范围,并且可以使用C++析构函数语义.但是,CLR不允许值类型具有析构函数.
我的随机搜索发现了一个论点,如果一个值类型被装箱,它就属于垃圾收集器的管辖范围,因此它的破坏变得不确定.我觉得这个论点不够强大,RAII的好处足以说明带有析构函数的值类型不能被装箱(或用作类成员).
简而言之,我的问题是:为了将RAII引入.NET,是否有任何其他原因无法使用值类型?(或者您认为我关于RAII明显优势的论点有缺陷吗?)
编辑:我必须没有明确表达这个问题,因为前四个答案已经错过了重点.我知道关于Finalize其不确定性的特点,我知道的using结构,我觉得这两个选项都逊色于RAII.using是一个阶级的消费者必须记住的另一件事(有多少人忘了把它StreamReader放在一个using街区?).我的问题是关于语言设计的哲学问题,为什么它是这样的,它可以改进吗?
例如,对于通用的确定性可破坏的值类型,我可以使using和lock关键字冗余(可以通过库类实现):
public struct Disposer<T> where T : IDisposable
{
T val;
public Disposer(T t) { val = t; }
public T Value { get { return val; } }
~Disposer() // Currently illegal
{
if (val != default(T))
val.Dispose();
}
}
Run Code Online (Sandbox Code Playgroud)
我忍不住以我曾经看过的apropos报价结束,但目前无法找到它的起源.
当我的冷死手超出范围时,你可以采取我的确定性破坏.- 匿名
我们在里面使用的字符串文字是自动变量吗?或者它们是否已在堆中分配,我们必须手动释放?
我的情况类似于下面显示的代码,其中我将字符串文字分配给类的私有字段(在代码中标记为ONE),并在稍后的程序中检索它并使用它(标记为TWO).我是否将堆栈中的变量分配给ONE中的字段?代码是否可以引用悬空指针,在这种情况下,因为程序足够小,所以可以工作?
我编译并运行它,它运行正常,但我在我的实际程序中遇到了一个奇怪的崩溃,我将字符串文字分配给类的字段,我怀疑上面提到的情况.
#include <iostream>
using namespace std;
class MemoryLeak
{
private:
char *s;
public:
MemoryLeak() {}
void store()
{
s = "Storing a string"; // ONE
}
char *retrieve()
{
return s;
}
};
int main()
{
MemoryLeak *obj = new MemoryLeak();
obj->store();
cout << obj->retrieve() << endl; // TWO
delete obj;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我应该将变量"s"声明为char数组而不是指针吗?我打算使用std :: string,但我对此很好奇.
任何指针或帮助,一如既往,非常感谢:)谢谢.
我没有在别处找到答案,而且似乎还没有在SO上提出这个问题.
在wxPython中创建事件绑定时,是否可以将其他参数传递给事件?例如,这是正常的方式:
b = wx.Button(self, 10, "Default Button", (20, 20))
self.Bind(wx.EVT_BUTTON, self.OnClick, b)
def OnClick(self, event):
self.log.write("Click! (%d)\n" % event.GetId())
Run Code Online (Sandbox Code Playgroud)
但是有可能将另一个参数传递给该方法吗?这样该方法可以判断多个小部件是否正在调用它但仍然返回相同的值?
它将大大减少复制和粘贴相同的代码,但具有不同的调用者.
Visual Studio 2005编辑器中的小文本输入光标让我疯狂.理想情况下,我希望能够突出显示(当然是黄色)我目前所在的整条线,但我会满足于只是将光标变大和/或使用不同的颜色.任何帮助感激不尽!
.net ×2
c++ ×2
c ×1
debugbreak ×1
debugging ×1
destructor ×1
eclipse ×1
events ×1
image ×1
java ×1
memory ×1
memory-leaks ×1
modal-dialog ×1
portability ×1
python ×1
raii ×1
struct ×1
svn ×1
value-type ×1
video ×1
wpf ×1
wxpython ×1