小编Adr*_*ore的帖子

如何找到程序的主要(...)功能?

我目前正在将一个带有几百个代码文件和依赖项的项目移植到几个第三方库到Mac Os.我终于达到了程序在没有警告或错误的情况下编译的程度,但它似乎没有执行我自己的主函数.

相反,它似乎执行一些似乎属于第三方的其他主要功能.此函数将一些诊断外观数据写入控制台,然后退出:

(gdb) continue
Current language:  auto; currently c++
//
// This is an automatically generated file.
// Do not edit.
//

const unsigned short expTable[] =
{
    0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x3c00, 
...
    0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x3c00, 0x3c00, 
};

Debugger stopped.
Program exited with status value:0.
Run Code Online (Sandbox Code Playgroud)

我无法使用调试器找出此主函数所在的位置,因为虽然堆栈跟踪似乎有效,但gdb没有向我显示每个堆栈条目的正确行号和文件名(有关详细信息,请参阅此未解决的问题).

搜索需要几分钟才能完成,但没有返回任何结果.

我的项目在其他库中使用SDL,但我获得了SDL_Main()和潜在的问题,并在一个完美的工作SDL项目模板之上构建了我的项目.所以我很确定我自己的主要功能是有效的.

你知道可能出了什么问题吗?我目前没有关于如何查找和删除流氓主要功能的想法.

谢谢,

阿德里安

编辑:正如我刚刚发现的那样,我在使用字符串"这是一个自动生成的"搜索文件时犯了一个错误.我刚刚发现了几十个具有相同字符串的文件,都属于FreeImage,我正在使用的第三方库之一.所以,问题似乎与FreeImage有关,但我仍然不确定如何继续,因为我已经将Freeimage编译为带有封闭的MacOs makefile的库,并且仅包含库.我将尝试重建一个较新版本的FreeImage并查看它是否解决了我的问题.

c++ unix gcc gdb

7
推荐指数
1
解决办法
4968
查看次数

如何将在UTF8中编码的非ASCII字符转换为Perl中的ASCII等效字符?

我有一个Perl脚本,第三方正在调用该脚本向我发送已注册我软件的人的姓名.其中一方以UTF-8编码名称,所以我相应地调整了我的脚本,用Encode :: decode_utf8(...)将UTF-8解码为ASCII.

这通常可以正常工作,但每6个月左右,其中一个名字包含西里尔字母,希腊字母或罗马字母,因此解码名称会产生垃圾字符,例如"ПоÐ'раÐанÑкаÑ".我必须跟进客户并要求他提供他的名字的"拉丁字符版本"才能发出注册码.

那么,是否有任何Perl模块可以检测是否存在这样的字符并在必要时自动将它们转换为最接近的ASCII表示?

似乎我可以使用Lingua :: Cyrillic :: Translit :: ICAO加Lingua :: DetectCharset来处理Cyrillic,但我更喜欢与其他字符集一起使用的东西.

perl ascii utf-8 character-encoding

7
推荐指数
1
解决办法
9428
查看次数

POST操作方法中强类型的ViewModel仅包含空值

我正在尝试使用强类型视图实现我的Edit操作方法,该视图接收自定义形状的ViewModel类.换句话说,我想要一个强类型的ViewModel,它包含应该编辑的Linq实体以及应该在View中显示的一些其他对象.

我可以在调用GET Edit操作方法时看到该视图,但强类型的POST操作方法只接收带有null参数的ViewModel类,我无法弄清楚如何检索POST参数.

视图模型如下所示:

//my custom-shaped ViewModel
public class CustomersFormViewModel
{
    public SelectList AccountTypesDropDownBox;
    public SelectList CountriesDropDownBox;
    public Customer Customer;
}
Run Code Online (Sandbox Code Playgroud)

action方法如下所示:

//
// GET: /CustomersController/Edit   

public ActionResult Edit(int ID)
{
   var model = new CustomersFormViewModel
                    {
                        Customer = repository.Load(ID.Value),
                        CountriesDropDownBox = GetCountries(),
                        AccountTypesDropDownBox = GetAccountTypes()
                    };
    return View(model);
}

//
// POST: /CustomersController/Edit  

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(CustomersFormViewModel model)
{
    //THE NEXT LINE THROWS!!!
    Debug.Assert(Model.Customer!=null);
    return View(model);
}
Run Code Online (Sandbox Code Playgroud)

这是我的编辑视图:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/CustAdminMaster.master"
    Inherits="System.Web.Mvc.ViewPage<Zeiterfassung.Controllers.CustomersController+CustomersFormViewModel>" %>

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc

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

Visual Studio 2008将dll锁定在bin文件夹中,并且不会放弃它

我正在研究一个由8个.NET项目组成的解决方案.由于我正在练习TDD,我必须经常重新编译我的解决方案.最近我在尝试编译时每隔一段时间就收到以下错误:

错误2无法将文件"obj\Debug\Zeiterfassung.Tests.dll"复制到"bin\Debug\Zeiterfassung.Tests.dll".该进程无法访问文件'bin\Debug\Zeiterfassung.Tests.dll',因为它正由另一个进程使用.

Zeiterfassung.Tests.dll是我的一个项目生成的DLL(它是单元测试项目).这个dll总是无法复制并导致错误.其他一切在100%的时间都能正常工作.

在大约9/10次,我可以通过重新编译我的解决方案来"解决"问题.但是当问题变得非常糟糕时,无论我多久都尝试一次,我必须重新启动IDE,项目才会成功编译.

我使用microsoft的handle.exe来确定哪个进程正在锁定DLL,它是devenv.exe.我也尝试手动删除DLL,直到我重新启动IDE才真正删除它.

最后但并非最不重要的是,我尝试<GenerateResourceNeverLockTypeAssemblies>true</GenerateResourceNeverLockTypeAssemblies>按照另一个论坛的建议添加到我的项目,但这没有帮助.

请帮忙!这个问题真的开始让我疯狂.

编辑:我可能还补充说,我确保在发生此问题时我的单元测试已完成.仍然,DLL仍然锁定.我正在通过Resharper单元测试资源管理器运行我的测试.

msbuild visual-studio

7
推荐指数
1
解决办法
5727
查看次数

如何使Resharper正确包裹很长的线?

Resharper的代码格式化通常很好,但在处理非常长的行时似乎完全被破坏了.例如,看看这段代码:

在此输入图像描述

我确实想要某种换行,但它应该向前看并在必要时缩进以避免可笑的断线量.像这样的东西会很棒:

在此输入图像描述

有没有办法让Resharper这样做?

resharper code-formatting visual-studio

7
推荐指数
1
解决办法
2918
查看次数

复制Http Request InputStream

我正在实现一个代理操作方法,该方法转发传入的Web请求并将其转发到另一个网页,添加一些标头.动作方法为GET请求工作文件,但我仍然在努力转发传入的POST请求.

问题是我不知道如何正确地将请求主体写入传出的HTTP请求流.

这是我到目前为止的缩短版本:

//the incoming request stream
var requestStream=HttpContext.Current.Request.InputStream;
//the outgoing web request
var webRequest = (HttpWebRequest)WebRequest.Create(url);
...

//copy incoming request body to outgoing request
if (requestStream != null && requestStream.Length>0)
            {
                long length = requestStream.Length;
                webRequest.ContentLength = length;
                requestStream.CopyTo(webRequest.GetRequestStream())                    
            }

//THE NEXT LINE THROWS A ProtocolViolationException
 using (HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse())
                {
                    ...
                }
Run Code Online (Sandbox Code Playgroud)

一旦我在传出的http请求上调用GetResponse,我就会收到以下异常:

ProtocolViolationException: You must write ContentLength bytes to the request stream before calling [Begin]GetResponse.
Run Code Online (Sandbox Code Playgroud)

我不明白为什么会发生这种情况,因为requestStream.CopyTo应该负责编写正确数量的字节.

任何建议将不胜感激.

谢谢,

阿德里安

c# asp.net asp.net-mvc webrequest httpwebrequest

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

RenderAction调用错误的动作方法

我正在努力渲染渲染,问题是它在我的控制器上调用了错误的动作方法.

在我的"用户"控制器上有两种叫做edit的动作方法,一种用于get,一种用于post请求:

public virtual ActionResult Edit(int id)
{
 //return a view for editing the user
}


[AcceptVerbs(HttpVerbs.Post)]
public virtual ActionResult Edit(UserViewModel model)
{
 //modify the user...
}
Run Code Online (Sandbox Code Playgroud)

在我看来,我将Renderaction称为如下:

Html.RenderAction("Edit", "Users", new { id = 666});
Run Code Online (Sandbox Code Playgroud)

现在的问题是我想要渲染GET动作方法.但是(也许是因为模型还包含一个名为ID的属性?),Renderaction会调用我的POST操作方法.

这样做的正确方法是什么?我正在使用ASP.NET MVC 3 RC以防万一.

谢谢,

阿德里安

asp.net-mvc renderaction asp.net-mvc-3

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

我可以从动作过滤器返回动作结果吗?

通常我在将数据提交到数据库之前在action方法中验证我的模型.

[HttpPost]
public ActionResult MyActionMethod(MyModelType model){
if (ModelState.IsValid){
   //commit changes to database...
   return View("SuccessView",model);
}
return View(model);
}
Run Code Online (Sandbox Code Playgroud)

但在一些非常罕见的情况下,我需要在提交模型时在业务层中执行一些额外的验证.如果发生验证错误,我想在业务层中引发异常并使用该异常返回带有验证错误的视图.

我正在寻找一种方法来实现它,而无需改变我的控制器中的任何代码.所以我正在寻找避免这种情况的方法:

[HttpPost]
public ActionResult MyActionMethod(MyModelType model){
if (ModelState.IsValid){
   try {
   //commit changes to database...
   } catch (ValidationException e){
      ModelState.AddModelError(...);
      return View(model);
   }
   return View("SuccessView",model);

}
return View(model);
}
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点?

我正在考虑一个捕获ValidationExceptions的动作过滤器,并在常规[HandleError]过滤器启动之前返回带有验证错误的合适视图.这样的事情可能吗?

编辑:我刚刚找到解决方案(见下文),但直到48小时后我才能将此标记为正确答案...

validation asp.net-mvc actionresult action-filter

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

Resharper 6.1是否适用于MBUnit?

不幸的是,Resharper在每个新版本中都有很长的破解MBUnit支持的历史.我注意到版本6.1已经发布,但是在它与MBUnit一起正常工作之前我无法使用它.

那么,Resharper仍然可以使用MBUnit吗?我自己尝试一下,但是上次我在降级时丢失了所有的Resharper设置,所以我想我最好先问这次.

谢谢,

阿德里安

resharper mbunit

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

如何抑制某些文件的 Intellisense 错误?

Visual Studio 2015 提供了在同一窗口中显示 Intellisense 错误的选项,该窗口还显示常规生成错误。我喜欢它,因为我什至不需要构建来查看我的代码的语法是否正确。

但是,该窗口还显示了一个误报,这似乎与 Intellisense 错误有关。有没有办法抑制特定代码区域或整个文件的智能感知错误?

intellisense visual-studio-2015

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